Issue 15971: Sporadic failure in test_dump_tracebacks_later_file (test_faulthandler) (original) (raw)

Seen on http://buildbot.python.org/all/builders/AMD64%20Lion%203.x/builds/428/steps/test/logs/stdio

====================================================================== FAIL: test_dump_tracebacks_later_file (test.test_faulthandler.FaultHandlerTests)

Traceback (most recent call last): File "/Users/ambv/Buildbot/3.x.langa-lion/build/Lib/test/test_faulthandler.py", line 490, in test_dump_tracebacks_later_file self.check_dump_tracebacks_later(file=True) File "/Users/ambv/Buildbot/3.x.langa-lion/build/Lib/test/test_faulthandler.py", line 476, in check_dump_tracebacks_later filename, loops) File "/Users/ambv/Buildbot/3.x.langa-lion/build/Lib/test/test_faulthandler.py", line 460, in _check_dump_tracebacks_later self.assertRegex(trace, regex) AssertionError: Regex didn't match: '^Timeout \(0:00:00.500000\)!\nThread 0x[0-9a-f]+:\n File "", line 9 in func\n File "", line 20 in $' not found in 'Timeout (0:00:00.500000)!\nThread 0x00007fff77d85960:\n File "", line 10 in func\n File "", line 20 in '


Ran 30 tests in 126.504s

The regex expects the failure to be at "line 9 in func", but the failure happens at "line 10".

Code of the failing test:

import faulthandler import time

def func(timeout, repeat, cancel, file, loops): for loop in range(loops): faulthandler.dump_tracebacks_later(timeout, repeat=repeat, file=file) if cancel: faulthandler.cancel_dump_tracebacks_later() time.sleep(timeout * 5) # line 9 faulthandler.cancel_dump_tracebacks_later() # line 10

timeout = {timeout} repeat = {repeat} cancel = {cancel} loops = {loops} if {has_filename}: file = open({filename}, "wb") else: file = None func(timeout, repeat, cancel, file, loops) if file is not None: file.close()

If the test fails at line 10: it means that it failed to dump the traceback in 2.5 seconds, whereas the traceback must be dumped after a timeout of 0.5 second.

Do you know if the system load of this particular buildbot is high? It would be nice to have the system load in the output of the buildbot.

We might change the timeout, but it is already long.