Tanaka Akira wrote:
> Linux 2.6's select notify readability by a UDP packet with a bad checksum.
> But read discards it and waits next packet with a correct checksum if
> O_NONBLOCK is clear.  If the next packet is not available, the read
> hangs.  Since O_NONBLOCK avoids the hang, it is possible to care the
> problem in application level.

This should be fixed in 2.6.10. They made a workaround that validates 
the checksum in select for blocking sockets only. See here:

http://linux.bkbits.net:8080/linux-2.6/cset / 1.1938.416.3?nav=index.html|src/.|src/net|src/net/ipv4|related/net/ipv4/udp.c

2.4 was also affected and the same fix went into 2.4.29.

Regards,
Ralf