`_try_compile` function from `dis` module firstly tries to compile given source string with `'eval'` mode and, if exception is occured, catches it and tries again with `'exec'` mode. These actions lead to a long chained traceback if given string contains syntax/indentation error, because this string gets refused by `compile` in both `'eval'` and `'exec'` modes. All functions/constructors from `dis` module that use `_try_compile` and accept source string as an argument (`dis`, `get_instructions`, `code_info`, `show_code`, `Bytecode`) are showing this behavior: ```python >>> dis.dis(')') Traceback (most recent call last): File "/home/.../cpython/Lib/dis.py", line 67, in _try_compile c = compile(source, name, 'eval') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<dis>", line 1 ) ^ SyntaxError: unmatched ')' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/.../cpython/Lib/dis.py", line 112, in dis _disassemble_str(x, file=file, depth=depth, show_caches=show_caches, adaptive=adaptive) File "/home/.../cpython/Lib/dis.py", line 593, in _disassemble_str _disassemble_recursive(_try_compile(source, '<dis>'), **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/.../cpython/Lib/dis.py", line 69, in _try_compile c = compile(source, name, 'exec') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<dis>", line 1 ) ^ SyntaxError: unmatched ')' ``` Python versions affected: 3.10.8, 3.11.0, current main. <!-- gh-linked-prs --> ### Linked PRs * gh-102115 <!-- /gh-linked-prs -->