select/read misbehaviour(?) in 2.1.78

Bjoern Kriews (bkr@cut.de)
Fri, 09 Jan 1998 03:56:30 +0100


strace on 2.0.33:

oldselect(1024, [3 4], NULL, NULL, NULL) = 1 (in [4])
read(4, "\377\377\377\377@\0\0\0\t\0\0\0\""..., 16) = 16

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)