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?
-
-
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|