Xiang Zhang added the comment: A simple try ... except ... can set the variable to Py_None:
>>> import threading >>> def foo(): ... try: ... raise RuntimeError ... except: ... pass ... raise ... >>> threading.Thread(target=foo).start() >>> Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner self.run() File "/usr/lib/python3.4/threading.py", line 868, in run self._target(*self._args, **self._kwargs) File "<stdin>", line 6, in foo RuntimeError: No active exception to reraise In the startup procedure, some c-apis are called and there are patterns like: try: import some_module except ImportError: some_module = ... So I think after startup the variable can't be NULL. But we do see a NULL case here. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27558> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com