strace on 2.1.78:
oldselect(1024, [3 4], NULL, NULL, NULL) = 1 (in [4])
read(4, "", 16) = 0
As expected, errno does not get set.
The problem arises with the FvwmCommandS module (fvwm-2.0.46).
It does the select and then calls into the fvwm2-lib, which does the
read.
The fvwm code looks ok (and runs well for me since 2.0.30).
I experienced a similar problem a while ago with 2.0.x kernels:
When running with an initrd-ramdisk-root I couldnt use "dir" when
ftp-ing to the machine while get/put worked.
strace-ing various ftpds and ftps showed that the ls got started
and wrote its data to the pipe while the pipe-read returned 0.
This was related to some condition on the ramdisk-root but I
wasn't able to figure out the reason.
I am willing to dive into the kernel-select-code but I would
appreciate a kernel-hackers comment on where to start.
To reproduce the situation copy this file to your fvwm2 moduledir/trace:
#!/bin/sh
/usr/bin/strace -f /usr/lib/X11/fvwm2/FvwmCommandS $* >/tmp/trace 2>&1
and start it as a module from fvwm, i.e. in your .fvwm2rc
AddToFunc InitFunction
+ "I" Module trace
If someone wants to look into it but cant reproduce the problem,
I can setup a login for you - mail me (bkr) @cut.de (sorry, hate spam).
Regards, Bjoern
-- Frequent, random crashes: Make sure you have sufficient swap space. (unix-3.04.html, Netscape Communications Corp.1997)