Thanks to the new faulthandler module (#11393) and regrtest timeout (#11727, timeout of 15 minutes), I finally found why test_threadsignals hangs on PPC Tiger 3.x:
-------------------------------------
...
[ 25/354] test_threadsignals
Thread 0xa000ed88:
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/test_threadsignals.py", line 46 in test_signals
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/case.py", line 387 in _executeTestPart
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/case.py", line 442 in run
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/case.py", line 494 in __call__
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/suite.py", line 105 in run
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/suite.py", line 67 in __call__
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/suite.py", line 105 in run
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/unittest/suite.py", line 67 in __call__
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/support.py", line 1078 in run
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/support.py", line 1166 in _run_suite
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/support.py", line 1192 in run_unittest
File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/test_threadsignals.py", line 210 in test_main
File "./Lib/test/regrtest.py", line 1032 in runtest_inner
File "./Lib/test/regrtest.py", line 826 in runtest
File "./Lib/test/regrtest.py", line 650 in main
File "./Lib/test/regrtest.py", line 1607 in <module>
make: *** [buildbottest] Error 1
program finished with exit code 2
elapsedTime=1103.489396
-------------------------------------
http://www.python.org/dev/buildbot/all/builders/PPC%20Tiger%203.x/builds/1685/steps/test/logs/stdio
test_threadsignals hangs at:
----------------
class ThreadSignals(unittest.TestCase):
def test_signals(self):
signalled_all.acquire()
self.spawnSignallingThread()
signalled_all.acquire() <~~~~ here
...
----------------
self.spawnSignallingThread() calls:
----------------
def send_signals():
os.kill(process_pid, signal.SIGUSR1)
os.kill(process_pid, signal.SIGUSR2)
signalled_all.release()
----------------
Before fixing the bug, we can workaroung the hang in the test using a timeout on the second acquire.
This issue may be related to #11223.
|