Subject: (Re-Send) shmctl() returns corrupt value on pb1000.

From: Takeshi Aihana <[email-masked]>
Date: 30 May 2002 20:10:16 +0900

# Sorry, please ignore previous mail I send.

Hello all,

I have a problem now about return the segment size of shared memory from
shmctl() func.

First of step was to start apache_1.3.24 on kernel-2.4.17/pb1000.
However it could not be started because it might be currput segment size
from shmctl() called in apache.
So that I tried to test with shmctl() on
(A)kernel-2.4.17/pb1000/gcc-2.95.3 and (B)kernel-2.4.9/x86/gcc-2.95.3 as
the follows. 
(B) was just returned correct segment size, but (A)'s segment size was 0
(of cause memory on pb1000 was left).

This simple code is follows, and `gcc -o test test.c`.
-----------------------------------8<---------------------------------------
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int main (void) {
  int shm_id;

  struct shmid_ds ds;
  shm_id = shmget(IPC_PRIVATE, 123, IPC_CREAT|0666);

  if (shm_id < 0) {
    perror ("shmget");
    return 1;
  }

  if (shmctl(shm_id, IPC_STAT, &ds)) {
    perror ("shmctl");
    exit (1);
  }
  printf( "shm_segsz = %d\n", ds.shm_segsz);
}

-----------------------------------8<---------------------------------------

Then each results are,
 x86(kernel-2.4.9/RH-7.2/gcc-2.95.3) : shm_segsz = 123
 pb1000(kernel-2.4.17/gcc-2.95.3)    : shm_segsz = 0

This value of pb1000 could not be expected for me.

So if you have any adivices that should be add option to compile on
pb1000, or if you have been faced similar to this, 
please let me knows.

Thank you for your helps.
Regards.

---
(TAKESHI - MontaVista Software Japan)

---

From: Atsushi Nemoto <[email-masked]>
Date: Thu, 30 May 2002 21:19:02 +0900 (JST)

>>>>> On 30 May 2002 20:10:16 +0900, Takeshi Aihana <[email-masked]> said:
takeshi_aihana> I have a problem now about return the segment size of
takeshi_aihana> shared memory from shmctl() func.

What version of libc are you using?  It seems your kernel headers and
libc headers are inconsistent.

Please look structures in libc's /usr/include/bits/{ipc,sem,shm,msg}.h
and kernel's include/asm-mips/{ipc,sem,shm,msg}buf.h carefully.

---
Atsushi Nemoto

---

From: Takeshi Aihana <[email-masked]>
Date: 30 May 2002 22:02:57 +0900

Hello,

> libc headers are inconsistent.

(A) The version of glibc on x86 is 2.2.4/kernel-2.4.9.
(B) The version of glibc on pb1000 is 2.2.3/kernel-2.4.17.

Is there any inconsistents on those conditions?
Should be update to 2.2.4 on pb1000?

> and kernel's include/asm-mips/{ipc,sem,shm,msg}buf.h carefully.

OK. I will do carefully. 
It looks like to not any diffs I should observe on both files, now.

Thank you for your help.

---

---

From: Atsushi Nemoto <[email-masked]>
Date: Fri, 31 May 2002 11:28:47 +0900 (JST)

>>>>> On 30 May 2002 22:02:57 +0900, Takeshi Aihana <[email-masked]> said:
takeshi_aihana> (B) The version of glibc on pb1000 is 2.2.3/kernel-2.4.17.

takeshi_aihana> Is there any inconsistents on those conditions?

AFAIK, Yes.  For example, look struct ipc_perm in bits/ipc.h and
struct ipc64_perm in asm-mips/ipcbuf.h (not struct ipc_perm in
linux/ipc.h which is obsolete).

takeshi_aihana> Should be update to 2.2.4 on pb1000?

If you can.  Please do not forget rebuilding all applications which
including these headers.  If you want to stay in 2.2.3, you will have
to modify your kernel headers according to the libc headers.

---
Atsushi Nemoto