You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Incorrect line number calculated in traceback #93662
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 <mark@hotpy.org>
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
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.
Activity
pablogsal commentedon Jun 9, 2022
Originally noticed by @godlygeek
pablogsal commentedon Jun 9, 2022
Notice that if you change the input to be:
Then the line numbers and the tracebacks are correct (likely due to the difference in column offset):
pablogsal commentedon Jun 9, 2022
May be related to #93249
markshannon commentedon 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 commentedon Jun 10, 2022
It's actually a bug in compiler front-end. It produces an instruction with
lineno == end_linenobutend_col_offset < col_offsetmarkshannon commentedon Jun 10, 2022
#93673
GH-93662: Make sure that column offsets are correct in multi-line met…
pythonGH-93662: Make sure that column offsets are correct in multi-li…
iritkatriel commentedon Jun 16, 2022
Backport to 3.11: #93895
[3.11] GH-93662: Make sure that column offsets are correct in multi-l…
Revert 30935 defer bpo45162 to 312 (#94285)