- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 33.3k
Closed as duplicate of#89726
Closed as duplicate of#89726
Copy link
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
Here is a minimal example:
import inspect
import sys
code = """
try:
    1/0
except* Exception:
    raise
"""
try:
    exec(code)
except:
    tb = sys.exc_info()[2]
    while tb:
        print(f"{tb.tb_frame=}")
        info = inspect.getframeinfo(tb.tb_frame)  # This may raise.
        tb = tb.tb_next
print("DONE")Tested on Python 3.13.7, the output is:
tb.tb_frame=<frame at 0x7fc9bd40ac80, file '/tmp/demo.py', line 16, code <module>>
tb.tb_frame=<frame at 0x7fc9bd4ae9b0, file '<string>', line -1, code <module>>
  + Exception Group Traceback (most recent call last):
  |   File "/tmp/demo.py", line 12, in <module>
  |     exec(code)
  |     ~~~~^^^^^^
  |   File "<string>", line 4, in <module>
  | ExceptionGroup:  (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "<string>", line 3, in <module>
    | ZeroDivisionError: division by zero
    +------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/tmp/demo.py", line 17, in <module>
    info = inspect.getframeinfo(tb.tb_frame)  # This may raise.
  File "/root/.pyenv/versions/3.13.7/lib/python3.13/inspect.py", line 1689, in getframeinfo
    start = lineno - 1 - context//2
            ~~~~~~~^~~
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
This is reproducible in Python 3.12+. It works on Python 3.11 but it might because it doesn't have the second problematic getframeinfo call while traversing the stack:
tb.tb_frame=<frame at 0x7f41ea7f97a0, file '/tmp/demo.py', line 16, code <module>>
DONE
This might be a duplicate of #89726, but we encountered an example using exception groups and it works on Python 3.11 but not 3.12+ so I'm filing a separate bug. Feel free to dedup.
CPython versions tested on:
3.13, 3.12, 3.14
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error