From: <dr...@bf...> - 2006-11-23 13:33:56
|
Michael D=FCrig wrote: >>> I use Chromium on Windows XP to drive 6 servers from one client over = a=20 >>> 1Gbps TCP/IP network. Every now and then Chromium locks up. The lock = up=20 >>> occurres in __tcpip_read_exact()'s call to recv(). Even though select= ()=20 >>> did report the socket to be ready for reading the first call to recv(= )=20 >>> blocks. If I kill the server of this connection recv() returns with = the=20 >>> correct error code. See the stack trace below for more details. >>> Does anyone else experience similar problems? I suspect this might be= a=20 >>> bug in some network driver (Intel) but I'm not sure. >> If there's any bugs in Chromiums packer/unpacker code, a common=20 >> symptom is for the network layer to get stuck in recv() - waiting for=20 >> bytes that aren't coming. >=20 > I dont think its a bug in Chromium since the block occurs on the first=20 > call to recv() after select() reported the socket to be readable. That=20 > is crTCPIPRecv() calls select(), finds the socket to be readable and=20 > calls crTCPIPReceiveMessage() which blocks right away on the statement >=20 > if ( __tcpip_read_exact( sock, &len, sizeof(len)) <=3D 0 ). >=20 > So this really shouldn't block or should it? >=20 >> Is the lock-up only happening with certain apps? Do those apps work=20 >> ok on other Chromium systems? >=20 > It does happen with at least a couple of apps I tried, one of which is=20 > atlantis. I didn't test on other systems though. Ok, some news on this. It does only happen on one machine and on this=20 machine only when running Windows. It does not happen on Linux. Even=20 after changing to a different NIC from a different vendor and a=20 different driver the problem remained. I discussed the issue on=20 microsoft.public.win32.programmer.networks. Someone recommended to use=20 non-blocking sockets instead of blocking sockets because 'select is=20 typically not used with blocking sockets'. So I hacked tcpip.c such that it now uses non-blocking=20 sockets. I'm not sure if this is of interested to anyone else but just=20 in case, here is the patch. Michael |