New submission from Adam Bartoš: There is a subtle bug in Python 3.4 implementation of traceback library:
>>> import traceback >>> >>> try: ... 1 / 0 ... except Exception as e: ... exc = e ... >>> traceback.print_exception(exc.__class__, exc, exc.__traceback__) Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: division by zero >>> >>> traceback.print_exception(exc.__class__, exc, None) Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: division by zero >>> >>> traceback.print_exception(exc.__class__, exc, None, chain=False) ZeroDivisionError: division by zero As can be seen, giving None traceback is ignored if chain == True. This is because None is incorrectly used as a sentinel value in traceback._iter_chain (see line 135). Note that this bug is fixed in Python 3.5 since there is a new implementation of traceback module using TracebackException objects. Will this be backported to Python 3.4? Otherwise, the bug itself should be fixed anyway. ---------- components: Library (Lib) messages: 247210 nosy: Drekin priority: normal severity: normal status: open title: Don't use None as sentinel for traceback type: behavior versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24696> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com