classification
Title: test_eintr fails randomly on AMD64 FreeBSD 10-STABLE Non-Debug 3.7: TypeError: 'int' object is not callable
Type: Stage:
Components: Tests Versions: Python 3.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: pablogsal, vstinner
Priority: normal Keywords:

Created on 2018-12-06 12:28 by vstinner, last changed 2018-12-10 22:08 by pablogsal.

Messages (4)
msg331232 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2018-12-06 12:28
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
msg331510 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2018-12-10 14:35
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
msg331542 - (view) Author: Pablo Galindo Salgado (pablogsal) * (Python committer) Date: 2018-12-10 21:56
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?
msg331543 - (view) Author: Pablo Galindo Salgado (pablogsal) * (Python committer) Date: 2018-12-10 22:08
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....
History
Date User Action Args
2018-12-10 22:08:33pablogsalsetmessages: + msg331543
2018-12-10 21:56:33pablogsalsetmessages: + msg331542
2018-12-10 14:35:11vstinnersetmessages: + msg331510
2018-12-06 12:28:28vstinnercreate