Subject: | t/timeout.t is SIGBREAK on Strawberry Perl |
Seems timeout is the source of the SIGBREAKs now.
https://raw.githubusercontent.com/toddr/IPC-Run/master/t/timeout.t
D:\>perl timeout.t
1..26
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
D:\>cpanm IPC::Run --verbose
cpanm (App::cpanminus) 1.7001 on perl 5.018002 built for MSWin32-x64-multi-thread
You have make C:\strawberry\c\bin\dmake.exe
You have LWP 6.08
You have "C:\Program Files (x86)\Git\bin\tar.exe", "C:\Program Files (x86)\Git\bin
\gzip.exe" and "C:\Program Files (x86)\Git\bin\bzip2.exe"
You have "C:\Program Files (x86)\Git\bin\unzip.exe"
Searching IPC::Run on cpanmetadb ...
--> Working on IPC::Run
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.94.tar.gz ... OK
Unpacking IPC-Run-0.94.tar.gz
IPC-Run-0.94/
IPC-Run-0.94/abuse/
IPC-Run-0.94/Changes
IPC-Run-0.94/eg/
IPC-Run-0.94/lib/
IPC-Run-0.94/LICENSE
IPC-Run-0.94/Makefile.PL
IPC-Run-0.94/MANIFEST
IPC-Run-0.94/META.json
IPC-Run-0.94/META.yml
IPC-Run-0.94/README
IPC-Run-0.94/t/
IPC-Run-0.94/TODO
IPC-Run-0.94/t/97_meta.t
IPC-Run-0.94/t/98_pod.t
IPC-Run-0.94/t/98_pod_coverage.t
IPC-Run-0.94/t/99_perl_minimum_version.t
IPC-Run-0.94/t/adopt.t
IPC-Run-0.94/t/binmode.t
IPC-Run-0.94/t/bogus.t
IPC-Run-0.94/t/filter.t
IPC-Run-0.94/t/harness.t
IPC-Run-0.94/t/io.t
IPC-Run-0.94/t/kill_kill.t
IPC-Run-0.94/t/lib/
IPC-Run-0.94/t/parallel.t
IPC-Run-0.94/t/pty.t
IPC-Run-0.94/t/pump.t
IPC-Run-0.94/t/run.t
IPC-Run-0.94/t/signal.t
IPC-Run-0.94/t/timeout.t
IPC-Run-0.94/t/timer.t
IPC-Run-0.94/t/win32_compile.t
IPC-Run-0.94/t/windows_search_path.t
IPC-Run-0.94/t/lib/Test.pm
IPC-Run-0.94/lib/IPC/
IPC-Run-0.94/lib/IPC/Run/
IPC-Run-0.94/lib/IPC/Run.pm
IPC-Run-0.94/lib/IPC/Run/Debug.pm
IPC-Run-0.94/lib/IPC/Run/IO.pm
IPC-Run-0.94/lib/IPC/Run/Timer.pm
IPC-Run-0.94/lib/IPC/Run/Win32Helper.pm
IPC-Run-0.94/lib/IPC/Run/Win32IO.pm
IPC-Run-0.94/lib/IPC/Run/Win32Pump.pm
IPC-Run-0.94/eg/factorial
IPC-Run-0.94/eg/factorial_pipe
IPC-Run-0.94/eg/factorial_scalar
IPC-Run-0.94/eg/run_daemon
IPC-Run-0.94/eg/runsh
IPC-Run-0.94/eg/runsu
IPC-Run-0.94/eg/synopsis_scripting
IPC-Run-0.94/abuse/blocking_debug_with_sub_coprocess
IPC-Run-0.94/abuse/blocking_writes
IPC-Run-0.94/abuse/broken_pipe_on_bad_executable_name
IPC-Run-0.94/abuse/timers
Entering IPC-Run-0.94
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.04)
Running Makefile.PL
Configuring IPC-Run-0.94 ... Checking if your kit is complete...
Looks good
Generating a dmake-style Makefile
Writing Makefile for IPC::Run
Writing MYMETA.yml and MYMETA.json
OK
Checking dependencies from MYMETA.json ...
Checking if you have Win32::Process 0.14 ... Yes (0.16)
Checking if you have Test::More 0.47 ... Yes (1.001009)
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.04)
Building and testing IPC-Run-0.94 ... cp lib/IPC/Run/Win32Pump.pm blib\lib\IPC\Run\Win32Pump.pm
cp lib/IPC/Run/Timer.pm blib\lib\IPC\Run\Timer.pm
cp lib/IPC/Run/Debug.pm blib\lib\IPC\Run\Debug.pm
cp lib/IPC/Run/Win32IO.pm blib\lib\IPC\Run\Win32IO.pm
cp lib/IPC/Run/Win32Helper.pm blib\lib\IPC\Run\Win32Helper.pm
cp lib/IPC/Run.pm blib\lib\IPC\Run.pm
cp lib/IPC/Run/IO.pm blib\lib\IPC\Run\IO.pm
"C:\strawberry\perl\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/97_meta.t .................. skipped: Author tests not required for installation
t/98_pod.t ................... skipped: Author tests not required for installation
t/98_pod_coverage.t .......... skipped: Author tests not required for installation
t/99_perl_minimum_version.t .. skipped: Author tests not required for installation
t/adopt.t .................... skipped: adopt not implemented yet
t/binmode.t .................. ok
t/bogus.t .................... ok
t/filter.t ................... ok
t/harness.t .................. ok
t/io.t ....................... ok
t/kill_kill.t ................ skipped: Temporarily ignoring test failure on Win32
t/parallel.t ................. skipped: Parallel tests are dangerous on MSWin32
t/pty.t ...................... skipped: IO::Pty not installed
t/pump.t ..................... ok
t/run.t ...................... ok
t/signal.t ................... skipped: Skipping on Win32
t/timeout.t .................. 9/26 Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
FAIL
Terminate batch job (Y/N)?
-----run from debugger
D:\>perl -d timeout.t
Loading DB routines from perl5db.pl version 1.39_10
Editor support available.
Enter h or 'h h' for help, or 'perldoc perldebug' for more help.
1..26
main::(timeout.t:26): my $h;
SetConsoleMode failed, LastError=|6| at C:/strawberry/perl/site/lib/Term/ReadKey.pm line 334.
at C:/strawberry/perl/vendor/lib/Term/ReadLine/readline.pm line 1581.
readline::readline(" DB<1> ") called at C:/strawberry/perl/vendor/lib/Term/ReadLine/Perl.pm line 11
Term::ReadLine::Perl::readline(Term::ReadLine::Perl=ARRAY(0x3d6d990), " DB<1> ") called at C:/strawberry/perl/lib/perl5db.pl line 7281
DB::readline(" DB<1> ") called at C:/strawberry/perl/lib/perl5db.pl line 1831
DB::_DB__read_next_cmd(undef) called at C:/strawberry/perl/lib/perl5db.pl line 2741
DB::DB called at timeout.t line 26
DB<1> n
main::(timeout.t:27): my $t;
DB<1>
main::(timeout.t:28): my $in;
DB<1>
main::(timeout.t:29): my $out;
DB<1>
main::(timeout.t:30): my $started;
DB<1>
main::(timeout.t:32): $h = harness( [ $^X ], \$in, \$out, $t = timeout( 1 ) );
DB<1>
main::(timeout.t:33): ok( $h->isa('IPC::Run') );
DB<1>
ok 1
main::(timeout.t:34): ok( !! $t->is_reset );
DB<1>
ok 2
main::(timeout.t:35): ok( ! $t->is_running );
DB<1>
ok 3
main::(timeout.t:36): ok( ! $t->is_expired );
DB<1>
ok 4
main::(timeout.t:37): $started = time;
DB<1>
main::(timeout.t:38): $h->start;
DB<1>
main::(timeout.t:39): ok( 1 );
DB<1>
ok 5
main::(timeout.t:40): ok( ! $t->is_reset );
DB<1>
ok 6
main::(timeout.t:41): ok( !! $t->is_running );
DB<1>
ok 7
main::(timeout.t:42): ok( ! $t->is_expired );
DB<1>
ok 8
main::(timeout.t:43): $in = '';
DB<1>
main::(timeout.t:44): eval { $h->pump };
DB<1>
main::(timeout.t:44): eval { $h->pump };
DB<1>
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
at C:/strawberry/perl/vendor/lib/IPC/Run.pm line 1598.
IPC::Run::kill_kill(IPC::Run=HASH(0x40e7f48)) called at C:/strawberry/perl/vendor/lib/IPC/Run.pm line 2751
IPC::Run::start(IPC::Run=HASH(0x40e7f48)) called at timeout.t line 60
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
----
Show quoted text
---run debugger again stepping through the statements that caused issue---
main::(timeout.t:44): eval { $h->pump };
DB<1> s
main::(timeout.t:44): eval { $h->pump };
DB<1> s
IPC::Run::pump(C:/strawberry/perl/vendor/lib/IPC/Run.pm:3260):
3260: die "pump() takes only a a single harness as a parameter"
3261: unless @_ == 1 && UNIVERSAL::isa( $_[0], __PACKAGE__ );
DB<1>
IPC::Run::pump(C:/strawberry/perl/vendor/lib/IPC/Run.pm:3263):
3263: my IPC::Run $self = shift;
DB<1> s
IPC::Run::pump(C:/strawberry/perl/vendor/lib/IPC/Run.pm:3265):
3265: local $cur_self = $self;
DB<1> s
IPC::Run::pump(C:/strawberry/perl/vendor/lib/IPC/Run.pm:3267):
3267: _debug "** pumping"
3268: if _debugging;
DB<1> s
IPC::Run::Debug::_debugging((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:91):
91: sub _debugging() { _debugging_atleast 1 }
DB<1> s
IPC::Run::Debug::_debugging_atleast((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:84):
84: my $min_level = shift || 1;
DB<1> s
IPC::Run::Debug::_debugging_atleast((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:86):
86: my $level = _debugging_level;
DB<1> s
IPC::Run::Debug::_debugging_level((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:65):
65: my $level = 0;
DB<1> s
IPC::Run::Debug::_debugging_level((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:67):
67: $level = $IPC::Run::cur_self->{debug} || 0
68: if $IPC::Run::cur_self
69: && ( $IPC::Run::cur_self->{debug} || 0 ) >= $level;
DB<1> s
IPC::Run::Debug::_debugging_level((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:71):
71: if ( defined $ENV{IPCRUNDEBUG} ) {
DB<1> s
IPC::Run::Debug::_debugging_level((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:80):
80: return $level;
DB<1> s
IPC::Run::Debug::_debugging_atleast((eval 8)[C:/strawberry/perl/vendor/lib/IPC/Run/Debug.pm:104]:88):
88: return $level >= $min_level ? $level : 0;
DB<1> s
IPC::Run::pump(C:/strawberry/perl/vendor/lib/IPC/Run.pm:3271):
3271: $self->start if $self->{STATE} < _started;
DB<1> s
IPC::Run::pump(C:/strawberry/perl/vendor/lib/IPC/Run.pm:3272):
3272: croak "process ended prematurely" unless $self->pumpable;
I am hoping someone might glean something from the output above.
I don't think win32 should have to skip this test entirely, but that is also a solution so that I may continue to smoke test it.
Let me know if you have any ideas.
Thanks.