Another message bug report received by the Debian Bug Tracking System: > From: Marius Gedminas <[EMAIL PROTECTED]> > To: Debian Bug Tracking System <[EMAIL PROTECTED]> > Subject: rxvt fails to exit after the shell terminates and starts eating CPU > > Package: rxvt > Version: 2.6.3 > > Today I noticed that after starting rxvt and exiting from the shell, > rxvt doesn't exit but starts eating the CPU instead. ltrace on the pid > shows that it is repeatedly calling > > XPending(0x0805f5a8, 0x0805cd80, 8192, 0x0804c3dd, 0x08059f84) = 0 > select(5, 0xbffffb5c, 0, 0, 0) = 1 > read(4, "", 8192) = -1 > > strace repeatedly shows > > ioctl(3, 0x541b, [0]) = 0 > select(5, [3 4], NULL, NULL, NULL) = 1 (in [4]) > read(4, 0x805cd80, 8192) = -1 EIO (Input/output error) > > gdb doesn't show anything interesting, since /usr/bin/X11/rxvt is stripped. > > However I'm also using rxvt that I compiled myself. It has the same > symptoms, and gdb on it shows stack trace of > > select > ?? <- (I guess that's actually rxvt_cmd_getc) > rxvt_main_loop > > It looks like rxvt doesn't notice that the child process has already > exited. This only happens if I start rxvt directly from the window > manager, and doesn't hapen if I start it from another rxvt window. > I has never happened before. This started today after I played a bit > with gdmconfig. Other terminal emulators do not show this behavior. > > Maybe SIGCHLD is ignored and rxvt inherits that state from gdm/X/icewm? > cat /proc/<pid>/status or a running rxvt (prior to exiting from its > shell) shows that SIGCHLD is blocked, if I interpret this correctly: > > SigPnd: 0000000000000000 > SigBlk: 0000000000010000 > SigIgn: 8000000000000000 > SigCgt: 0000000000014007 > > After exiting (when the 100% CPU eating select/read loop begins), the > /proc/<pid>/status shows > > SigPnd: 0000000000010000 > SigBlk: 0000000000010000 > SigIgn: 8000000000000000 > SigCgt: 0000000000014007 > > BTW I use icewm-1.0.8.6-2, gdm 2.2.4.1-1.
