From: sos AT prospect DOT com DOT ru (Sergey Okhapkin) Subject: Problem with select() 19 Sep 1998 03:47:35 -0700 Message-ID: <01BDE3DC.595A43C0.cygnus.cygwin32.developers@sos> To: "'cygwin32-developers AT cygnus DOT com'" Hi! I have a strange problem with wget-1.5.2 running a new dll. Select call (to check for write and except on socket) succeeded in select thread, but fails in poll later with WSAENOTSOCK error (one more NT bug?-). Here is an extract from tracefile, note marked lines: [main] wget 1000 (0) cygwin32_select: 4, 0x0, 0x242EC20, 0x242EC18, 0x242EC10 [main] wget 1000 (0) hinfo::select_write: /dev/tcp fd 3 [main] wget 1000 (0) hinfo::select_except: /dev/tcp fd 3 >[main] wget 1000 (0) start_thread_socket: adding socket 0x100 [main] wget 1000 (0) start_thread_socket: stuff_start 0x242EB2C, exitsock 148 [main] wget 1000 (0) select_stuff::wait: n 2, ms 900000 [select_socket] wget 1000 (0) thread_socket: stuff_start 0xA044E04 >[select_socket] wget 1000 (0) thread_socket: Win32 select returned 1 [select_socket] wget 1000 (0) thread_socket: s 0xA031880, testing fd 3 (/dev/tcp) [select_socket] wget 1000 (0) thread_socket: write_ready [main] wget 1000 (0) select_stuff::wait: woke up. wait_ret 1. verifying [main] wget 1000 (0) select_stuff::wait: gotone 1 >[main] wget 1000 (0) poll_socket: polling socket 0x100 [main] wget 1000 (0) poll_socket: adding write fd_set /dev/tcp, fd 3 [main] wget 1000 (0) poll_socket: adding except fd_set /dev/tcp, fd 3 >[main] wget 1000 (0) poll_socket: WINSOCK_SELECT returned -1 [main] wget 1000 (0) poll_socket: error 10038 [main] wget 1000 (0) select_stuff::poll: returning 0 [main] wget 1000 (0) select_stuff::~select_stuff: calling cleanup routines [main] wget 1000 (0) socket_cleanup: si 0xA041DF0 si->thread 0x158 [main] wget 1000 (0) select_stuff::~select_stuff: deleting select records I run NTS4.0 SP3 with MS winsock proxy client installed. To fix a problem I made the following changes in select() code: select.cc (poll_socket): do not call win32 select if the socked is checked already in select thread, debug printf added. (start_thread_socket): debug printfs added. (socket_cleanup): delete si when it no longer needed. -- Sergey Okhapkin, http://www.lexa.ru/sos Moscow, Russia begin 600 select.diff M+2TM("]W:6YS=7 O2!\?"!M92T^97AC97!T7W)E M861Y*0HK(" @(')E='5R;B!S971?8FET&-E<'1F9',I.PHK"B @('=I;G-O8VM?9F1?&-E<'1F9',["B @('-TS!].PH@("!(04Y$3$4@:" ](&UE+3YF:"T^9V5T7VAA;F1L M92 H*3L**R @&ET&-E<'1F9',I.PH@("!S='5F9BT^9&5V:6-E7W-P96-I9FEC6T9(1$56 M3BA&2%]33T-+150I72 ]("AV;VED("HI('-I.PH@("!S:2T^&ET"(L("9S='5F9BT^&ETPH@(" @(" @*"II7V-L;W-E