GeezerVison is showing github.com — Incorrect line number calculated in traceback · Issue #93662 · python/cpython
Incorrect line number calculated in traceback #93662DescriptionConsider the following code:
def _run_with_file_output():
example_report_generation_message= (
"""
"""
).strip()
raise ValueError()
_run_with_file_output()
If you execute this with 3.11.0a7 you get (correct traceback):
Traceback (most recent call last):
File "/home/pablogsal/github/python/3.11/lel.py", line 8, in <module>
_run_with_file_output()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pablogsal/github/python/3.11/lel.py", line 6, in _run_with_file_output
raise ValueError()
^^^^^^^^^^^^^^^^^^
ValueError
but on 3.11.0b1 you get:
Traceback (most recent call last):
File "/home/pablogsal/github/python/3.11/lel.py", line 8, in <module>
_run_with_file_output()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pablogsal/github/python/3.11/lel.py", line 255, in _run_with_file_output
ValueError
Notice that the last line number for _run_with_file_output is wrong (255 instead of 6).
Bisecting points at:
944fffee8916cb94321fa33cd3a43f4108717746 is the first bad commit
commit 944fffee8916cb94321fa33cd3a43f4108717746
Author: Mark Shannon <[email protected]>
Date: Thu Apr 21 16:10:37 2022 +0100
GH-88116: Use a compact format to represent end line and column offsets. (GH-91666)
* Stores all location info in linetable to conform to PEP 626.
* Remove column table from code objects.
* Remove end-line table from code objects.
* Document new location table format
Activitypablogsal commented on Jun 9, 2022 pablogsal commented on Jun 9, 2022 Notice that if you change the input to be:
def _run_with_file_output():
_= (
"""
"""
).strip()
raise ValueError()
_run_with_file_output()
Then the line numbers and the tracebacks are correct (likely due to the difference in column offset):
Traceback (most recent call last):
File "/home/pablogsal/github/python/3.11/lel.py", line 8, in <module>
_run_with_file_output()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pablogsal/github/python/3.11/lel.py", line 6, in _run_with_file_output
raise ValueError()
^^^^^^^^^^^^^^^^^^
ValueError
pablogsal commented on Jun 9, 2022 markshannon commented on Jun 10, 2022 It looks like the table is correct, but the parsing to get the line number is wrong.
.__code__.co_positions() shows the correct positions, but .__code__.co_lines() shows the wrong line numbers. markshannon commented on Jun 10, 2022 It's actually a bug in compiler front-end. It produces an instruction with lineno == end_lineno but end_col_offset < col_offset markshannon commented on Jun 10, 2022 added a commit that references this issue on Jun 14, 2022GH-93662: Make sure that column offsets are correct in multi-line met… iritkatriel commented on Jun 16, 2022
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|