I don't understand the error, it doesn't make sense. It *seems* like faulthandler.cancel_dump_traceback_later attribute has been set to an int, but I don't see how it could be possible. Or the call raises the TypeError? But the call can be summarized to: Py_CLEAR(thread.file); and I don't see how Py_CLEAR() can trigger a TypeError. https://buildbot.python.org/all/#/builders/170/builds/175 ERROR: test_sigwaitinfo (__main__.SignalEINTRTest) Traceback (most recent call last): File "/usr/home/buildbot/python/3.7.koobs-freebsd10.nondebug/build/Lib/test/eintrdata/eintr_tester.py", line 71, in tearDown faulthandler.cancel_dump_traceback_later() TypeError: 'int' object is not callable
Sometimes a test is killed by SIGALRM (signal 14). I don't understand how it can happen, since test_eintr always disarm the ITIMER_REAL timer before restoring the old signal handler (which kills the process when SIGARLM is received). https://buildbot.python.org/all/#/builders/170/builds/190 0:05:34 load avg: 4.19 [102/416/1] test_eintr failed test_flock (__main__.FNTLEINTRTest) ... ok test_lockf (__main__.FNTLEINTRTest) ... ok test_read (__main__.OSEINTRTest) ... ok test_wait (__main__.OSEINTRTest) ... ok test_wait3 (__main__.OSEINTRTest) ... ok test_wait4 (__main__.OSEINTRTest) ... ok test_waitpid (__main__.OSEINTRTest) ... ok test_write (__main__.OSEINTRTest) ... ok test_devpoll (__main__.SelectEINTRTest) ... skipped 'need select.devpoll' test_epoll (__main__.SelectEINTRTest) ... skipped 'need select.epoll' test_kqueue (__main__.SelectEINTRTest) ... ok test_poll (__main__.SelectEINTRTest) ... ok test_select (__main__.SelectEINTRTest) ... test_all (test.test_eintr.EINTRTests) ... --- run eintr_tester.py --- --- eintr_tester.py completed: exit code -14 --- FAIL ====================================================================== FAIL: test_all (test.test_eintr.EINTRTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/home/buildbot/python/3.7.koobs-freebsd10.nondebug/build/Lib/test/test_eintr.py", line 31, in test_all self.fail("eintr_tester.py failed") AssertionError: eintr_tester.py failed ---------------------------------------------------------------------- Ran 1 test in 7.889s FAILED (failures=1) test test_eintr failed
Could it be that there is another test that is sending SIGALRM but does not disarm the ITIMER_REAL timer before restoring the previous handler? --- TypeError: 'int' object is not callable Can it be that thread.file has some custom deallocator/finalizer that fails?
I logged in into the buildbot and try to reproduce that. After 230 iterations of `test_eintr` I cannot reproduce the signal problem. Maybe this is an interaction with some other test....