cpan-authors / IPC-Run

https://metacpan.org/pod/IPC::Run
Other
21 stars 38 forks source link

t/timer.t and t/timeout.t hanging - "Terminating on signal SIGBREAK(21)" #98

Closed genio closed 1 year ago

genio commented 7 years ago

With Strawberry 5.24, somehow every time I try to install IPC::Run, the installation dies with a SIGBREAK

PS C:\Users\cwhitener> cpanm IPC::Run
--> Working on IPC::Run
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.96.tar.gz ... OK
Configuring IPC-Run-0.96 ... OK
Building and testing IPC-Run-0.96 ... Terminating on signal SIGBREAK(21)
Terminate batch job (Y/N)?
PS C:\Users\cwhitener>
iamlgh commented 6 years ago

I see the same problem with Strawberry 5.20 on Win 10 and Server 2012, but not Win 7 or Server 2008. More specifically, it fails when running "dmake test" running t/timeout.t.

t/timeout.t .................. 9/26 Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)
^CTerminating on signal SIGBREAK(21)
Terminating on signal SIGBREAK(21)

t/timer.t also fails with a similar error.

toddr commented 6 years ago

I don't have access to windows 10 to sort this. Can you provide any further information?

genio commented 6 years ago
cpanm (App::cpanminus) 1.7043 on perl 5.026001 built for MSWin32-x64-multi-thread
Work directory is C:\Users\CWHITE~1/.cpanm/work/1522114671.6240
You have make C:\Strawberry\c\bin\gmake.exe
You have LWP 6.27
Falling back to Archive::Tar 2.26
Searching IPC::Run () on cpanmetadb ...
--> Working on IPC::Run
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.97.tar.gz
-> OK
Unpacking IPC-Run-0.97.tar.gz
Entering IPC-Run-0.97
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.30)
Configuring IPC-Run-0.97
Running Makefile.PL
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for IPC::Run
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.30)
Checking if you have Test::More 0.47 ... Yes (1.302096)
Checking if you have Win32::Process 0.14 ... Yes (0.16)
Checking if you have Win32API::File 0.1203 ... Yes (0.1203)
Building and testing IPC-Run-0.97
cp lib/IPC/Run/Debug.pm blib\lib\IPC\Run\Debug.pm
cp lib/IPC/Run.pm blib\lib\IPC\Run.pm
cp lib/IPC/Run/Timer.pm blib\lib\IPC\Run\Timer.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/Win32Pump.pm blib\lib\IPC\Run\Win32Pump.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
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)
^CTerminate batch job (Y/N)? Terminate batch job (Y/N)? Terminate batch job (Y/N)? 
genio commented 6 years ago

It happens on Win10 with Strawberry 5.26.1.1 as well. The SIGBREAK happens without intervention.

C:\Users\cwhitener>cpanm IPC::Run                                              
--> Working on IPC::Run                                                        
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.97.tar.gz ... OK  
Configuring IPC-Run-0.97 ... OK                                                
Building and testing IPC-Run-0.97 ... Terminating on signal SIGBREAK(21)       
Terminate batch job (Y/N)? n                                                   

C:\Users\cwhitener>                                                            
eserte commented 6 years ago

It can be reproduced on appveyor: https://ci.appveyor.com/project/eserte/doit/build/1.0.271/job/cr4acejsdvdlv16c

Today with 0.97 it's the first time I saw this problem --- usually installing IPC::Run using cpanm on the appveyor systems with strawberryperl just worked.

eserte commented 6 years ago

... OK, it worked because the latest IPC::Run used to be preinstalled in strawberryperl. Today it's the first time an upgrade with cpanm was attempted.

toddr commented 6 years ago

Ideally we need to bisect back to where this started failing. My windows vm is still broken. Hopefully I’ll figure it out later this week

mohawk2 commented 6 years ago

It installs Ok on my Windows 7, Strawberry 5.20.0.

toddr commented 6 years ago

From #62:

@toddr This test is blocking tests on windows. If I go back to v0.90 it still fails. This means either windows changed something or SP changed something. As I'm getting reports that it still works, I'm inclined to just skip.

@toddr adding $SIG{BREAK} = 'IGNORE' doesn't seem to prevent the signal from bubbling up.

@toddr Possibly related ttps://rt.cpan.org/Ticket/Display.html?id=120926

toddr commented 6 years ago

Need to try SP 5.20.0 on windows 10 to try to determine if this is a windows or SP issue.

toddr commented 6 years ago

https://github.com/toddr/IPC-Run/issues/25 is a dupe of this.

genio commented 6 years ago

Windows 10 and SP 5.20:

c:\Strawberry>

c:\Strawberry>5.20.3.3\portableshell.bat
----------------------------------------------
 Welcome to Strawberry Perl Portable Edition!
 * URL - http://www.strawberryperl.com/
 * see README.TXT for more info
----------------------------------------------
Perl executable: c:\Strawberry\5.20.3.3\perl\bin\perl.exe
Perl version   : 5.20.3 / MSWin32-x64-multi-thread

c:\Strawberry>cpanm IPC::Run
--> Working on IPC::Run
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.99.tar.gz ... OK
Configuring IPC-Run-0.99 ... OK
Building and testing IPC-Run-0.99 ... Terminating on signal SIGBREAK(21)
Terminate batch job (Y/N)? n

c:\Strawberry>cpanm IPC::Run@0.90
! Finding IPC::Run (== 0.90) on cpanmetadb failed.
--> Working on IPC::Run
Fetching http://backpan.perl.org/authors/id/T/TO/TODDR/IPC-Run-0.90.tar.gz ... OK
Configuring IPC-Run-0.90 ... OK
Building and testing IPC-Run-0.90 ... Terminating on signal SIGBREAK(21)
Terminate batch job (Y/N)? n

c:\Strawberry>
genio commented 6 years ago

windows 10, perl 5.20.0, IPC::Run 0.92 ships with it, but also fails install:

c:\Strawberry>refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait...Finished..

c:\Strawberry>5.20.0.1\portableshell.bat
----------------------------------------------
 Welcome to Strawberry Perl Portable Edition!
 * URL - http://www.strawberryperl.com/
 * see README.TXT for more info
----------------------------------------------
Perl executable: c:\Strawberry\5.20.0.1\perl\bin\perl.exe
Perl version   : 5.20.0 / MSWin32-x64-multi-thread

c:\Strawberry>perl -MIPC::Run -E  "say $IPC::Run::VERSION"
0.92

c:\Strawberry>cpanm IPC::Run
--> Working on IPC::Run
Fetching http://www.cpan.org/authors/id/T/TO/TODDR/IPC-Run-0.99.tar.gz ... OK
Configuring IPC-Run-0.99 ... OK
Building and testing IPC-Run-0.99 ... Terminating on signal SIGBREAK(21)
Terminate batch job (Y/N)? n

c:\Strawberry>cpanm --test-only IPC::Run@0.92
--> Working on IPC::Run
Fetching http://backpan.perl.org/authors/id/T/TO/TODDR/IPC-Run-0.92.tar.gz ... OK
Configuring IPC-Run-0.92 ... OK
Building and testing IPC-Run-0.92 ... Terminating on signal SIGBREAK(21)
Terminate batch job (Y/N)? n

c:\Strawberry>
genio commented 6 years ago

Sorry, I accidentally clicked the wrong button.

bulk88 commented 6 years ago

Someone has to put a DebugBreak() or __builtin_trap() or a BP in the perl sig handler func sig_terminate() , to capture a callstack. Was it a pure software raise() on same thread, or a new thread? Ctrl-C'es on Win32 execute in a separate spawned thread (basically console proc does a CreateRemoteThread() with a func pointer from console app proc that console app proc sent to console proc through secret MS IPC/RPC when the console app attached to a console handle, typ on startup ), not on the "main" thread.

I dont fully get the line numbers in this ticket vs the perl source I see in the repo, but if " $self->signal( "TERM" );" from Run.pm:kill_kill executed, why would "Terminating on signal SIGBREAK(21)" be wrong?

toddr commented 6 years ago

@bulk88 thanks for looking. the line numbers have changed since we've made several recent changes. Right now make test hangs. It looks like something in make (some sort of bat file?) is catching a signal and causing the whole test suite to hang?

jameysiddiqui commented 6 years ago

I am facing similar issue running the test IPC-Run-20180523.0 on Windows Server 2016 "C:\iwperl.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\autoflush.t ........................ ok t\binmode.t .......................... ok t\bogus.t ............................ ok t\eintr.t ............................ No such signal: SIGUSR1 at t\eintr.t line 27. t\eintr.t ............................ skipped: can't deliver a signal on this platform 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\readonly.t ......................... skipped: Readonly is require for this test to work. t\run.t .............................. ok t\run_stdin-callback-return-array.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)

Please let me know any update on this. Thanks, Jamey

PhilterPaper commented 5 years ago

I seem to be having a very similar problem on Windows 10, Strawberry Perl 5.26. The upgrade attempt shows:

cpan> upgrade IPC::Run

Package namespace         installed    latest  in CPAN file
IPC::Run                       0.96 20180523.0  TODDR/IPC-Run-20180523.0.tar.gz
Running install for module 'IPC::Run'
Checksum for C:\STRAWB~1\cpan\sources\authors\id\T\TO\TODDR\IPC-Run-20180523.0.tar.gz ok
Configuring T/TO/TODDR/IPC-Run-20180523.0.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for IPC::Run
Writing MYMETA.yml and MYMETA.json
  TODDR/IPC-Run-20180523.0.tar.gz
  C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for T/TO/TODDR/IPC-Run-20180523.0.tar.gz
---- Unsatisfied dependencies detected during ----
----      TODDR/IPC-Run-20180523.0.tar.gz     ----
    IO::Pty [requires,optional]
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/Win32Pump.pm blib\lib\IPC\Run\Win32Pump.pm
cp lib/IPC/Run/Timer.pm blib\lib\IPC\Run\Timer.pm
cp lib/IPC/Run.pm blib\lib\IPC\Run.pm
cp lib/IPC/Run/IO.pm blib\lib\IPC\Run\IO.pm
cp lib/IPC/Run/Win32Helper.pm blib\lib\IPC\Run\Win32Helper.pm
  TODDR/IPC-Run-20180523.0.tar.gz
  C:\STRAWB~1\c\bin\gmake.exe -- OK
Running make test for TODDR/IPC-Run-20180523.0.tar.gz
"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/autoflush.t ........................ ok
t/binmode.t .......................... ok
t/bogus.t ............................ ok
t/eintr.t ............................ No such signal: SIGUSR1 at t/eintr.t line 27.
t/eintr.t ............................ skipped: can't deliver a signal on this platform
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/readonly.t ......................... ok
t/run.t .............................. ok
t/run_stdin-callback-return-array.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)
Terminate batch job (Y/N)? Terminate batch job (Y/N)? y
y

The SIGBREAK is spontaneous (my only action was to hit 'y' twice, which still leaves cpan hung up).

Prereq IO::Pty refuses to install (optional anyway??) on a non-POSIX system. I'm not sure if IPC::Run was ever successfully upgraded since the Perl install ca. January 2018.

PhilterPaper commented 5 years ago

An update... I unpacked the installation (20180523) onto my desktop, brought in the 2 or 3 updates since the release (latest: 20180924), and tried a build/upgrade there:

C:\Users\Phil\Desktop\IPC-Run-20180523.0>cpan .
Loading internal logger. Log::Log4perl recommended for better logging
You are visiting the local directory
  '.'
  without lock, take care that concurrent processes do not do likewise.
CPAN: Time::HiRes loaded ok (v1.976)
CPAN: CPAN::SQLite loaded ok (v0.217)
CPAN: LWP::UserAgent loaded ok (v6.39)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
CPAN: YAML::XS loaded ok (v0.80)
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
Database was generated on Mon, 14 Oct 2019 18:48:01 GMT
Updating database file ... Done!
You are visiting the local directory
  'C:/Users/Phil/Desktop/IPC-Run-20180523.0/.'
  without lock, take care that concurrent processes do not do likewise.
  C:/Users/Phil/Desktop/IPC-Run-20180523.0/.
  Has already been unwrapped into directory C:/Users/Phil/Desktop/IPC-Run-20180523.0/.
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
CPAN: Module::CoreList loaded ok (v5.20190920)
Configuring C:/Users/Phil/Desktop/IPC-Run-20180523.0/. with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a gmake-style Makefile
Writing Makefile for IPC::Run
Writing MYMETA.yml and MYMETA.json
Directory 'C:/Users/Phil/Desktop/IPC-Run-20180523.0/.' not below C:\STRAWB~1\cpan\build, will not store persistent state
  C:/Users/Phil/Desktop/IPC-Run-20180523.0/.
  C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for C:/Users/Phil/Desktop/IPC-Run-20180523.0/.
----  Unsatisfied dependencies detected during  ----
---- C:/Users/Phil/Desktop/IPC-Run-20180523.0/. ----
    IO::Pty [requires,optional]
cp lib/IPC/Run/Win32IO.pm blib\lib\IPC\Run\Win32IO.pm
cp lib/IPC/Run.pm blib\lib\IPC\Run.pm
cp lib/IPC/Run/Win32Helper.pm blib\lib\IPC\Run\Win32Helper.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/Win32Pump.pm blib\lib\IPC\Run\Win32Pump.pm
cp lib/IPC/Run/IO.pm blib\lib\IPC\Run\IO.pm
  C:/Users/Phil/Desktop/IPC-Run-20180523.0/.
  C:\STRAWB~1\c\bin\gmake.exe -- OK
Running make test for C:/Users/Phil/Desktop/IPC-Run-20180523.0/.
"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/autoflush.t ........................ ok
t/binmode.t .......................... ok
t/bogus.t ............................ ok
t/child_fd_inadvertently_closed.t .... Can't spawn a subroutine on Win32 at t/child_fd_inadvertently_closed.t line 57.
No command before '3<' at t/child_fd_inadvertently_closed.t line 57.
Unexpected SCALAR(0x1f8a5c8) in harness() parameter 7 at t/child_fd_inadvertently_closed.t line 57.
# Looks like your test exited with 25 before it could output anything.
t/child_fd_inadvertently_closed.t .... Dubious, test returned 25 (wstat 6400, 0x1900)
Failed 1/1 subtests
t/eintr.t ............................ No such signal: SIGUSR1 at t/eintr.t line 27.
t/eintr.t ............................ skipped: can't deliver a signal on this platform
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/readonly.t ......................... ok
t/run.t .............................. ok
t/run_stdin-callback-return-array.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)
Terminate batch job (Y/N)? Terminate batch job (Y/N)? y
y

No real change (not fixed). Also note that the new t-test failed, so you may want to look at that. Could the lack of IO::Pty be breaking something in the timeout.t test?

Todd, if you want to send me revised installation images to try (as above) on my Windows 10/Strawberry Perl 5.26, I'll be happy to try them out.

PhilterPaper commented 4 years ago

With the latest release (20200505.0) on Strawberry Perl 5.26.1, Windows 10, timeout.t no longer fails. Unfortunately, there are a number of other test failures. I see in the test matrix that all Windows tests are failing. I will open a new ticket for the new items.

LordAro commented 2 years ago

Yup, confirmed, upgrading from 20180523.0 (distributed with Strawberry Perl 5.28.0.1) to 20220807.0 has made the SIGBREAKs go away. Again, the tests are failing due to some newline weirdnesses, but I can live with that.

Haven't investigated further.