(cc: to [EMAIL PROTECTED] and to [EMAIL PROTECTED] - this
should be the last post to LKML for this subject)

Known historical items:

-All shm segments get used up in very fast order.
-Everyone noticing it maintains it is 4.01c versioned
-It happens on multiple versions of Linux kernels, 2.2 and 2.4 (no other
OS in tests)

New items:

- I did a completely fresh checkout of X a few hours ago and built it
modular, I now get the shm bug
- I have -not- changed my kernel but I have changed kernel source.
- X itself doesn't seem to be getting the SHM segments but child
processes are and someone isn't detaching from them, particularly
starting enlightenment causes a flurry of SHM allocations.

The sequence of events by my running gdb on both X and enlightenment and
trapping all shm calls is this:

enlightenment creates and attaches to a segment
X attaches
they chit chat over the shared mem
enlightenment detaches and destroys the segment
X remains attached to the segment
...repeat until exit
at exit of X, segments are detached by default


     (gdb)
     E Breakpoint 1, shmget (key=0, size=32768, shmflg=1023)
     E Breakpoint 4, shmat (shmid=567279622, shmaddr=0x0, shmflg=0)

      ipcs refcount=1
     X Breakpoint 13, shmat (shmid=567279622, shmaddr=0x0,
     shmflg=0)
      ipcs refcount=2
     X Breakpoint 15, shmctl (shmid=567279622, cmd=2,
     buf=0xbffff1fc)
     (buffer write/reads)
     E Breakpoint 2, shmdt (shmaddr=0x40014000)
       ipcs refcount=1
       ipcs shmid marked destroyed
     X is still attached to this shmid, it will not do anything
     else on this shmid for the remainder of it's life.

Interim conclusion:

X is at fault.  Linux kernel is fine.  X simply doesn't detach any of
these client requested segments.  It -does- detach the segments it
started itself.

That being said, it is very possible that X (and other processes)
depended on a default action.  Recently SHM handling changed in the
Linux Kernel which is still correct but may tickle processes that need
to have code updated.  I suspect X simply needs the shm handling
tweaked.  I've diffed the CVS code all the way back to April and there
are no relevant SHM changes.  Above we see that X does an shmctl() with
IPC_STAT as the cmd, but never detaches from it.  As we see below, X
calls shmdt() the next time it gets a message from the client.  In the
current CVS code it never calls shmdt()


Here's a paste of a working X compiled and installed on September 4th.


     E - Breakpoint 4, shmget (key=0, size=32768, shmflg=1023)
     0x00000000 698023942 david     777       32768     0
     E - Breakpoint 1, shmat (shmid=698023942, shmaddr=0x0,
     shmflg=0)
     0x00000000 698023942 david     777       32768     1
     X - Breakpoint 1, shmat (shmid=698023942, shmaddr=0x0,
     shmflg=0)
     0x00000000 698023942 david     777       32768     2
     E - Breakpoint 2, shmdt (shmaddr=0x40014000)
     0x00000000 698023942 david     777       32768     1
     Breakpoint 3, shmctl (shmid=698023942, cmd=0, buf=0x0)
     0x00000000 698023942 david     777       32768     1
     dest
     E - Breakpoint 4, shmget (key=0, size=524288, shmflg=1023)
     E - Breakpoint 1, shmat (shmid=698056711, shmaddr=0x0,
     shmflg=0)
     0x00000000 698056711 david     777       524288    1
     X - Breakpoint 2, shmdt (shmaddr=0x40015000)
     (first segment removed)


     Here is what enlightenment is doing (invert the part
     sequence):
     (gdb) bt
     #0  shmat (shmid=698089478, shmaddr=0x0, shmflg=0)
         at ../sysdeps/unix/sysv/linux/shmat.c:39
     #1  0x40091c77 in Imlib_render (id=0x81090f0, im=0x811d4a0,
     w=447, h=162)
         at rend.c:6468
     #2  0x8078d0a in SetBackgroundTo (imd=0x81090f0, win=2097191,
     dsk=0x8114430,
         setbg=1 '\001') at desktops.c:912
     [...]
     #2  0x4019396e in _XRead (dpy=0x8107e80,
         data=0xbfffc19c "\\\002\b\001q\030(J\001", size=32) at
     XlibInt.c:1032
     #3  0x4019428b in _XReply (dpy=0x8107e80, rep=0xbfffc19c,
     extra=0,
     discard=1)
         at XlibInt.c:1667
     #4  0x401900fe in XSync (dpy=0x8107e80, discard=0) at
     Sync.c:41

[more to come - dinner calls - please feel free to comment and provide
information]

-d



--
      "There is a natural aristocracy among men. The grounds of this are
      virtue and talents", Thomas Jefferson [1742-1826], 3rd US President


begin:vcard 
n:Ford;David
x-mozilla-html:TRUE
org:<img src="http://www.kalifornia.com/images/paradise.jpg">
adr:;;;;;;
version:2.1
email;internet:[EMAIL PROTECTED]
title:Blue Labs Developer
x-mozilla-cpt:;28256
fn:David Ford
end:vcard

Reply via email to