You're right! I tracked as far as entering the perl_clone() call in threads.xs. It goes in and doesn't come out until I connect to the socket from an external process:
C:\test>828831.pl paused # threads.xs(695) # threads.xs(700) # threads.xs(722) # threads.xs(736) # threads.xs(765) # threads.xs(774) # threads.xs(788) # threads.xs(796) # threads.xs(824) # threads.xs(834) # threads.xs(904) # threads.xs(906) # threads.xs(929) accept loop started paused # threads.xs(695) # threads.xs(700) # threads.xs(722) # threads.xs(736) # threads.xs(765) ### hangs here until Connect from IO::Socket::INET=GLOB(0x544e2a0) ### I connect with tel +net # threads.xs(774) ### then everything r +uns on # threads.xs(788) # threads.xs(796) # threads.xs(824) # threads.xs(834) # threads.xs(904) # threads.xs(906) # threads.xs(929) Client 1 started ### and the internal c +lients connect
So the question becomes, what could perl_clone() be locking and not freeing, that gets freed when accept() gets a connection from an external process?
In reply to Re^2: threads + sockets stalling question
by BrowserUk
in thread threads + sockets stalling question
by BrowserUk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |