Port-amiga archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-amiga/7667



On Tue, Jun 01, 1999 at 08:36:54AM +0200, Ruben van Staveren wrote:
> On Mon, May 31, 1999 at 11:47:48PM +0200, Ignatios Souvatzis wrote:
> > On Mon, May 31, 1999 at 11:28:08PM +0200, Ruben van Staveren wrote:
> > 
> > kdump output mentions unimplemented shmat and shmget.
> > You get this problem if you dont have

As I already mentioned, I misread this.

the "unimplemented" in this text:

   336 panel    CALL  #231 (unimplemented shmget)(0,0x900,0x3ff)
   336 panel    RET   #231 (unimplemented shmget) 196608/0x30000
   336 panel    CALL  #228 (unimplemented shmat)(0x30000,0,0)
   336 panel    RET   #228 (unimplemented shmat) 140517376/0x8602000
   336 panel    CALL  write(0x4,0x75000,0x80)
   336 panel    GIO   fd 4 wrote 128 bytes

is just a small bug in the way the system call name table of kdump is 
created. Christos Zoulas has fixed this for -current. Just ignore the
"unimplemented". The system call was done fine, and returned fine
(0x30000 being the shm id, 0x8602000 is the address the shm segment
is mapped in, and uhm, 0x900 must be the size of the segment - 2.25 kBytes.)

This seems to be what happens when you do MIT-SHM X11 requests: 
get the shm id, map it in, then (invisible to the syscall tracer, of course)
write the pixmap or Ximage data to the shm segment, then write the X request
operating on the Ximage or pixmap to the fd holding the X connection (from
other parts of the trace, I guess this is the write to fd 4).

However, in the next few lines:

   336 panel    RET   write 128/0x80
   336 panel    CALL  read(0x4,0xdfff36c,0x20)
   336 panel    RET   read -1 errno 35 Resource temporarily unavailable
   336 panel    CALL  poll(0x48fc0,0x1,0xffffffff)
   336 panel    RET   poll 1
   336 panel    CALL  read(0x4,0xdfff36c,0x20)
   336 panel    GIO   fd 4 read 0 bytes
       ""
   336 panel    RET   read 0

Something fishy happens.
First the read returns COMEAGAINLATER.
panel then poll(2)s for this descriptor (it is only one!). WHen poll returns,
the read returns 0 bytes, thats EOF. So in the meantime, the X server has 
closed down. 

You should trace the X server to find out, why. 
Get a big disk for the ktrace.out. And run ktrace as root; any suid-ing would
disable ktrace (thats a security measure).

My guess is that X runs out of resources for big Ximage stuff.
Please try to "unlimit" the X servers resources with the -ld 0 and -lf 0
and -ls 0 options (see man Xserver).

Regards,
        Ignatios



Home | Main Index | Thread Index | Old Index