Description
t/op/threads.t
appears to be vulnerable to hangs which cause the file to be graded as FAIL
.
See this smoke-test report of our simulation in Perl 5: http://perl5.test-smoke.org/report/118070.
I went to the NetBSD VM that generated this smoke testing report. Using the same perl
that generated the second of the two FAILS in that report, I first called:
$ ./perl -Ilib -V:config_args
config_args='-des -Dusedevel -Duseithreads -DDEBUGGING';
[perl-reporter-08] $ ./perl -Ilib t/op/threads.t
1..30
ok 1 - delete() under threads
ok 2 - weaken ref under threads
ok 3 - weaken ref \#2 under threads
# parent 19460: continue
# kid 1 before sort
# parent 19460: continue
# kid 2 before sort
# parent 19460: waiting for join
# kid 1 after sort, sleeping 1
# kid 2 after sort, sleeping 1
# kid 1 exit
# parent 19460: thread exited
# parent 19460: waiting for join
# kid 2 exit
# parent 19460: thread exited
ok 4
ok 5 - cloning constant subs
ok 6 - Ensure PL_linestr can be cloned
ok 7 - threads in CHECK block
ok 8 - threads in INIT block
ok 9 - Bug \#41138
ok 10 - [perl \#45053]
ok 11
ok 12
ok 13 - clone seen-evals
ok 14 - undefing a typeglob doesn't cause a crash during cloning
ok 15 - No del_backref panic [perl \#70748]
ok 16 - No del_backref panic [perl \#70748] (2)
ok 17 - returning a closure
ok 18 - Test for 34394ecd06e704e9
ok 19 - RT \#73046
ok 20 - 0 refcnt neither on tmps stack nor in @_
ok 21 - RT \#73086 - clone used to clone active pads
ok 22 - Just special casing lexicals in ?{ ... }
ok 23 - 0 refcnt during CLONE
ok 24 - avoid peephole recursion
ok 25 - Pipes shared between threads do not block when closed
ok 26 - globs cloned and joined are not recloned
ok 27 - no crash when deleting $::{INC} in thread
ok 28 - no crash modifying extended array element
ok 29 - RT \#36664: Strange behavior of shared array
ok 30 - RT \#41121 binmode(STDOUT,":encoding(utf8) does not crash
So far so good. But then I called:
[perl-reporter-08] $ cd t ; ./perl harness -v op/threads.t; cd -
ok 1 - delete() under threads
ok 2 - weaken ref under threads
ok 3 - weaken ref \#2 under threads
ok 4
ok 5 - cloning constant subs
ok 6 - Ensure PL_linestr can be cloned
ok 7 - threads in CHECK block
ok 8 - threads in INIT block
ok 9 - Bug \#41138
The program hung there for several minutes, during which I began typing this report. Then ...
# Test process timed out - terminating
Failed 21/30 subtests
Test Summary Report
-------------------
op/threads.t (Wstat: 139 Tests: 9 Failed: 0)
Non-zero wait status: 139
Parse errors: Bad plan. You planned 30 tests but ran 9.
Files=1, Tests=9, 183 wallclock secs ( 0.02 usr 0.05 sys + 2.36 cusr 0.57 csys = 3.00 CPU)
Result: FAIL
ISTR this problem has appeared previously. Granted, this failure occurred in the smoke-me/jkeenan/cumberland-blues branch in Perl 5 -- not in tag alpha-02-MC-4
in our repository. But I know this is not the first time I've seen a hang at this point.
Thank you very much.
Jim Keenan