
bulk88 at hotmail
Aug 10, 2012, 3:34 PM
Post #4 of 8
(75 views)
Permalink
|
> Subject: RE: Enable IO::Pipe Tests on Windows? > Date: Fri, 10 Aug 2012 08:38:53 +0100 > From: Steve.Hay [at] verosoftware > To: david [at] justatheory; perl5-porters [at] perl > I put it into my current blead workspace and tried it out, but it > doesn't work :-( > > Process Explorer shows me that the perl.exe running io_pipe.t has > spawned a child perl.exe like this: > > perl.exe -pe "BEGIN{$SIG{ALRM} = sub {print qq(not ok 4\n); exit}; alarm > 10} s/not //" > > and it's now just sat there doing nothing. I killed the child process to > see if the parent (../../t/perl -I../.. -MTestInit=U2T t/io_pipe.t) > would continue with other things, but that's also now hung too. > > Verbose output showed ok 1 and ok 2, then the child hung. After I killed > the child I got ok 4, ok 5 and ok 6 but then had to kill the parent. > > So it seems like IO::Pipe->reader() works (as BrowserUk said, and his > example works for me too) but IO::Pipe->writer() doesn't?... Child process cmd line is "C:\p517\bin\perl.exe -pe "BEGIN{$SIG{ALRM} = sub {print qq(not ok 4\n); exit}; alarm 10} s/not //"", parent cmd line is "perl io_pipe.t". Child perl curcop file is "-e", curcop line is 0. Child callstack is ___________________________________________________ ntdll.dll!ZwReadFile() + 0xa bytes kernel32.dll!ReadFile() + 0xb6 bytes msvcr90.dll!_read_nolock(int fh=0, void * inputbuf=0x0000000001c888e0, unsigned int cnt=0) Line 233 + 0x1f bytes C msvcr90.dll!_read(int fh=0, void * buf=0x0000000000000000, unsigned int cnt=0) Line 93 + 0xd bytes C perl517.dll!win32_read(int fd=0, void * buf=0x0000000001c888e0, unsigned int cnt=8192) Line 3209 C perl517.dll!PerlLIORead(IPerlLIO * piPerl=0x00000000003d0f28, int handle=0, void * buffer=0x0000000001c888e0, unsigned int count=8192) Line 1034 C++ perl517.dll!PerlIOUnix_read(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c47010, void * vbuf=0x0000000001c888e0, unsigned __int64 count=8192) Line 2789 + 0x2c bytes C perl517.dll!Perl_PerlIO_read(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c47010, void * vbuf=0x0000000001c888e0, unsigned __int64 count=8192) Line 1679 + 0x54 bytes C perl517.dll!PerlIOBuf_fill(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c51a00) Line 4033 + 0x21 bytes C perl517.dll!Perl_PerlIO_fill(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c51a00) Line 1776 + 0x50 bytes C perl517.dll!PerlIOBase_read(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c51a00, void * vbuf=0x000000000012d4d8, unsigned __int64 count=1) Line 2170 + 0xf bytes C perl517.dll!PerlIOBuf_read(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c51a00, void * vbuf=0x000000000012d4d8, unsigned __int64 count=1) Line 4054 + 0x19 bytes C perl517.dll!Perl_PerlIO_read(interpreter * my_perl=0x0000000001c269f8, _PerlIO * * f=0x0000000001c51a00, void * vbuf=0x000000000012d4d8, unsigned __int64 count=1) Line 1679 + 0x54 bytes C perl517.dll!PerlIO_getc(_PerlIO * * f=0x0000000001c51a00) Line 4911 + 0x1a bytes C > perl517.dll!Perl_sv_gets(interpreter * my_perl=0x0000000001c269f8, sv * const sv=0x0000000001c28db0, _PerlIO * * const fp=0x0000000001c51a00, long append=0) Line 7761 + 0xd bytes C perl517.dll!Perl_do_readline(interpreter * my_perl=0x0000000001c269f8) Line 1689 + 0x1f bytes C perl517.dll!Perl_pp_readline(interpreter * my_perl=0x0000000001c269f8) Line 348 C perl517.dll!Perl_runops_debug(interpreter * my_perl=0x0000000001c269f8) Line 2129 + 0x11 bytes C perl517.dll!S_run_body(interpreter * my_perl=0x0000000001c269f8, long oldscope=1) Line 2389 C perl517.dll!perl_run(interpreter * my_perl=0x0000000001c269f8) Line 2307 C perl517.dll!RunPerl(int argc=3, char * * argv=0x00000000003c0d20, char * * env=0x000000000034bdd0) Line 270 + 0xa bytes C++ perl.exe!main(int argc=3, char * * argv=0x00000000003c0d20, char * * env=0x000000000034bc30) Line 24 C perl.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C kernel32.dll!BaseProcessStart() + 0x2c bytes _____________________________________________________ In parent perl, callstack is _____________________________________________________ ntdll.dll!ZwWaitForMultipleObjects() + 0xa bytes kernel32.dll!WaitForMultipleObjectsEx() - 0x65 bytes user32.dll!RealMsgWaitForMultipleObjectsEx() + 0x147 bytes user32.dll!MsgWaitForMultipleObjects() + 0x40 bytes > perl517.dll!win32_msgwait(interpreter * my_perl=0x0000000001c269f8, unsigned long count=1, void * * handles=0x000000000012f768, unsigned long timeout=4294967295, unsigned long * resultp=0x000000000012f770) Line 2162 + 0x26 bytes C perl517.dll!win32_waitpid(int pid=22584, int * status=0x000000000012f830, int flags=0) Line 2292 C perl517.dll!PerlProcWaitpid(IPerlProc * piPerl=0x00000000003cf1b0, int pid=22584, int * status=0x000000000012f830, int flags=0) Line 1678 C++ perl517.dll!Perl_wait4pid(interpreter * my_perl=0x0000000001c269f8, int pid=22584, int * statusp=0x000000000012f830, int flags=0) Line 3178 + 0x2c bytes C perl517.dll!Perl_pp_waitpid(interpreter * my_perl=0x0000000001c269f8) Line 4115 + 0x18 bytes C perl517.dll!Perl_runops_debug(interpreter * my_perl=0x0000000001c269f8) Line 2129 + 0x11 bytes C perl517.dll!S_run_body(interpreter * my_perl=0x0000000001c269f8, long oldscope=1) Line 2389 C perl517.dll!perl_run(interpreter * my_perl=0x0000000001c269f8) Line 2307 C perl517.dll!RunPerl(int argc=2, char * * argv=0x00000000003b0660, char * * env=0x000000000034bde0) Line 270 + 0xa bytes C++ perl.exe!main(int argc=2, char * * argv=0x00000000003b0660, char * * env=0x000000000034bc40) Line 24 C perl.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C kernel32.dll!BaseProcessStart() + 0x2c bytes _______________________________________________________ curcop file is "C:/p517/lib/IO/Pipe.pm", curcop line is 152. That is it for now. I didn't analyze the problem any further right now.
|