New submission from STINNER Victor: The following test fails on FreeBSD buildbot:
def test_finalize_with_trace(self): # Issue1733757 # Avoid a deadlock when sys.settrace steps into threading._shutdown assert_python_ok("-c", """if 1: import sys, threading # A deadlock-killer, to prevent the # testsuite to hang forever def killer(): import os, time time.sleep(2) print('program blocked; aborting') os._exit(2) t = threading.Thread(target=killer) t.daemon = True t.start() # This is the trace function def func(frame, event, arg): threading.current_thread() return func sys.settrace(func) """) I ran it manually on my FreeBSD 9.1 VM, I get the following error. I don't know if it's the same error than the buildbot. ---- (...) # clear builtins._ (...) # restore sys.stderr # cleanup __main__ # cleanup[1] _sysconfigdata (...) # cleanup[1] threading Exception ignored in: <function WeakSet.__init__.<locals>._remove at 0x801b11058> Traceback (most recent call last): File "/usr/home/haypo/prog/python/default/Lib/_weakrefset.py", line 38, in _remove File "x.py", line 17, in func AttributeError: 'NoneType' object has no attribute 'current_thread' # cleanup[1] _weakrefset (...) # cleanup[3] _codecs PyThreadState_Clear: warning: thread still has a frame ---- The weakref is probably threading._dangling. IMO Py_Finalize() should first clear the trace function. Tracing Python exception while Python is dying (exiting) is insane. I'm surprised that it works :-) ---------- messages: 195244 nosy: haypo, ncoghlan, pitrou priority: normal severity: normal status: open title: test_threading.test_finalize_with_trace() fails on FreeBSD buildbot versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue18746> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com