Subject: shm_open doesn't work (fix maybe).


I have been chasing all around trying to find out why
shm_open always returns ENOSYS. It is implemented
in glibc-2.2.2, and seems the 2.4.3 kernel knows about
shmfs.

It seems the file linux/mm/shmem.c has:
#define SHMEM_MAGIC 0x01021994

And the glibc-2.2.2/sysdeps/unix/sysv/linux/linux_fsinfo.h has:
#define SHMFS_SUPER_MAGIC 0x02011994

Well, which is correct?

Looking for (trouble?) the reason, I found a patch
http://www.mail-archive.com/[email protected]/msg16996.html

where there seems to be a typo, the remove line is correct:
-#define SHM_FS_MAGIC 0x02011994

but the insert line has the 0201 reversed:
+#define SHMEM_MAGIC 0x01021994

Has anyone else run into this? (It seems the documentation on shmfs
is sparse, so I don't think too many folks are even messing with it).

Initially I thought, hey simple, just fix the kernel source, and
everyone will be happy. But, then I thought, ooof! code I build
for someone without a patched kernel will surely break. So then
I thought simple I'll fix glibc and statically link. Of course, then
someone will fix this, and all my binaries will be broken.

Help! what is the "right" fix.




2001-04-24 17:02:09

by Jakub Jelinek

[permalink] [raw]
Subject: Re: shm_open doesn't work (fix maybe).

On Tue, Apr 24, 2001 at 11:46:20AM -0500, Tom Brusehaver (N-Sysdyne Corporation) wrote:
>
> I have been chasing all around trying to find out why
> shm_open always returns ENOSYS. It is implemented
> in glibc-2.2.2, and seems the 2.4.3 kernel knows about
> shmfs.
>
> It seems the file linux/mm/shmem.c has:
> #define SHMEM_MAGIC 0x01021994
>
> And the glibc-2.2.2/sysdeps/unix/sysv/linux/linux_fsinfo.h has:
> #define SHMFS_SUPER_MAGIC 0x02011994
>
> Well, which is correct?

Update your glibc, 2.2.3pre* matches 2.4.x kernel:

2001-03-03 Ulrich Drepper <[email protected]>

* sysdeps/unix/sysv/linux/linux_fsinfo.h (SHMFS_SUPER_MAGIC):
Update for real 2.4 kernels.

Jakub

2001-04-25 07:11:26

by Christoph Rohland

[permalink] [raw]
Subject: Re: shm_open doesn't work (fix maybe).

Hi,

On Tue, 24 Apr 2001, Jakub Jelinek wrote:
> On Tue, Apr 24, 2001 at 11:46:20AM -0500, Tom Brusehaver (N-Sysdyne
> Corporation) wrote:
>>
>> I have been chasing all around trying to find out why
>> shm_open always returns ENOSYS. It is implemented
>> in glibc-2.2.2, and seems the 2.4.3 kernel knows about
>> shmfs.
>>
>> It seems the file linux/mm/shmem.c has:
>> #define SHMEM_MAGIC 0x01021994
>>
>> And the glibc-2.2.2/sysdeps/unix/sysv/linux/linux_fsinfo.h has:
>> #define SHMFS_SUPER_MAGIC 0x02011994
>>
>> Well, which is correct?
>
> Update your glibc, 2.2.3pre* matches 2.4.x kernel:
>
> 2001-03-03 Ulrich Drepper <[email protected]>
>
> * sysdeps/unix/sysv/linux/linux_fsinfo.h (SHMFS_SUPER_MAGIC):
> Update for real 2.4 kernels.

Yes, and I apologize to Ulrich that the changed number slipped through
to the official kernel. My fault.

Greetings
Christoph