use strict; use warnings; use threads; use IO::Socket::INET; my $s = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => 80, Proto => 'tcp') or die "error: $@"; print "create t1\n"; my $t1 = threads->create(sub { my ($r) = @_; my $data = ''; print "in t1\n"; # this intentionally blocks. if this line is removed the problem vanishes $r->recv($data, 64); print "recv done\n"; }, $s); print "create t2\n"; my $t2 = threads->create(sub { print "in t2\n"; # problem: this is never printed }, 0); print "done\n"; # problem: this is never printed, as threads->create never returns $t1->join(); $t2->join(); #### ntdll.dll!_KiFastSystemCallRet@0() ntdll.dll!_NtQueryVolumeInformationFile@20() + 0xc kernel32.dll!_GetFileType@4() + 0x72 > msvcr71.dll!_fstati64(int fildes=3, _stati64 * buf=0x0012fab4) Line 97 + 0x8 C perl519.dll!PerlLIOFileStat(IPerlLIO * piPerl=0x00cdc134, int handle=3, _stati64 * buffer=0x0012fab4) Line 971 + 0xe C perl519.dll!PerlIOUnix_setfd(interpreter * my_perl=0x00000400, _PerlIO * * f=0x0012f9cc, int fd=1029, int imode=0) Line 2571 + 0x15 C perl519.dll!PerlIOUnix_dup(interpreter * my_perl=0x00b4b014, _PerlIO * * f=0x00b4bac4, _PerlIO * * o=0x00905b24, clone_params * param=0x0012fb9c, int flags=1) Line 2696 + 0xf C perl519.dll!PerlIOBase_dup(interpreter * my_perl=0x00b4b014, _PerlIO * * f=0x00b4bac4, _PerlIO * * o=0x008f5574, clone_params * param=0x0012fb9c, int flags=1) Line 2221 C perl519.dll!PerlIO_fdupopen(interpreter * my_perl=0x0012f9cc, _PerlIO * * f=0x00070023, clone_params * param=0x0012fb9c, int flags=1) Line 503 + 0x13 C perl519.dll!Perl_fp_dup(interpreter * my_perl=0x00b4b014, _PerlIO * * const fp=0x008f5574, const char type=0, clone_params * const param=0x0012fb9c) Line 11825 + 0xb C perl519.dll!PerlIO_clone(interpreter * my_perl=0x0000006c, interpreter * proto=0x00000400, clone_params * param=0x0012fb9c) Line 617 + 0xc C perl519.dll!perl_clone_using(interpreter * proto_perl=0x0036471c, unsigned long flags=6, IPerlMem * ipM=0x00000000, IPerlMem * ipMS=0x00cdc028, IPerlMem * ipMP=0x00cdc044, IPerlEnv * ipE=0x00cdc060, IPerlStdIO * ipStd=0x00cdc098, IPerlLIO * ipLIO=0x00cdc134, IPerlDir * ipD=0x00cdc19c, IPerlSock * ipS=0x00cdc1c8, IPerlProc * ipP=0x00cdc278) Line 13649 C perl519.dll!perl_clone_host(interpreter * proto_perl=0x0036471c, unsigned long flags=6) Line 360 C threads.dll!S_ithread_create(interpreter * parent_perl=0x00000400, sv * init_function=0x008fcc14, long stack_size=0, int gimme=2, int exit_opt=0, int params_start=3, int num_params=1) Line 794 C threads.dll!XS_threads_create(interpreter * my_perl=0x00000002, cv * cv=0x0096de44) Line 1100 + 0x30 C perl519.dll!Perl_pp_entersub(interpreter * my_perl=0x00000000) Line 2794 C perl519.dll!Perl_runops_standard(interpreter * my_perl=0x0036471c) Line 42 + 0x4 C perl519.dll!S_run_body(interpreter * my_perl=0x0000006c, long oldscope=1) Line 2449 + 0xa C perl519.dll!perl_run(interpreter * my_perl=0x0036471c) Line 2365 + 0x8 C perl519.dll!RunPerl(int argc=2, char * * argv=0x01362478, char * * env=0x00362d80) Line 259 + 0x6 C perl.exe!mainCRTStartup() Line 398 + 0xe C kernel32.dll!_BaseProcessStart@4() + 0x23 #### ntdll.dll!_KiFastSystemCallRet@0() ntdll.dll!_ZwDeviceIoControlFile@40() + 0xc mswsock.dll!_WSPRecv@36() + 0xd1 mswsock.dll!_WSPRecvFrom@44() + 0xe099 ws2_32.dll!_recvfrom@24() + 0x87 > perl519.dll!win32_recvfrom(unsigned int s=3, char * buf=0x00b376f4, int len=64, int flags=0, sockaddr * from=0x0117fa10, int * fromlen=0x0117fe50) Line 481 + 0x34 C perl519.dll!PerlSockRecvfrom(IPerlSock * piPerl=0x00aad5e0, unsigned int s=3, char * buffer=0x00b376f4, int len=64, int flags=0, sockaddr * from=0x0117fa10, int * fromlen=0x0117fe50) Line 1389 + 0x17 C perl519.dll!Perl_pp_sysread(interpreter * my_perl=0x00000400) Line 1699 C perl519.dll!Perl_runops_standard(interpreter * my_perl=0x0090865c) Line 42 + 0x4 C perl519.dll!Perl_call_sv(interpreter * my_perl=0x00158018, sv * sv=0x003b92b0, volatile long flags=18348252) Line 2764 + 0xc C threads.dll!S_ithread_run(void * arg=0x00905c24) Line 520 + 0x14 C kernel32.dll!_BaseThreadStart@8() + 0x37 #### ntoskrnl.exe!ZwAlertThread+0x28 ntoskrnl.exe!SeAssignSecurityEx+0x13f ntoskrnl.exe!MmGrowKernelStack+0x61a ntoskrnl.exe!IoPageRead+0xaf0 ntoskrnl.exe!MmGrowKernelStack+0x659 ntoskrnl.exe!RtlGenerate8dot3Name+0x1ca ntoskrnl.exe!IoCheckFunctionAccess+0xf841 ntoskrnl.exe!ZwSetSystemInformation+0x23 ntdll.dll!KiFastSystemCallRet MSVCR71.dll!fstati64+0x63 perl519.dll!win32_stderr+0x302 perl519.dll!PerlIO_teardown+0x3ea perl519.dll!PerlIOBase_dup+0x33 perl519.dll!PerlIO_allocate+0x8b perl519.dll!Perl_fp_dup+0x32 perl519.dll!perl_clone_using+0x74f perl519.dll!perl_clone_host+0x6f threads.dll+0x2647