[pypy-issue] Issue #3093: Line numbers in bytecode are truncated to 8 bits (pypy/pypy)

Marius Gedminas issues-reply at bitbucket.org
Mon Oct 14 06:37:28 EDT 2019

New issue 3093: Line numbers in bytecode are truncated to 8 bits

Marius Gedminas:

I noticed that [code coverage analysis is wrong](https://github.com/nedbat/coveragepy/issues/839) on PyPy3.6 \(version 7.1.1\).  This is either a bug in the `dis` module, or a bug in the `co_lnotab` generator, I’m not quite sure which.

To reproduce:

* git clone https://github.com/mgedmin/ghcloneall
* cd ghcloneall
* pypy3.6 -m dis ghcloneall.py

compare the line numbers shown by `pypy3.6 -m dis` with line numbers shown by `python3.6 -m dis`: 

* everything’s fine until line 97
* the LOAD\_BUILD\_CLASS for ‘Repo’ is supposed to be on line 348 but is instead shown to be on line 92 \(FWIW 348 == 92 \+ 256\)
* the next LOAD\_BUILD\_CLASS is on line 127 instead of 383
* this continues right until the end where we get line 190 instead of 958 \(958 == 190 \+ 3\*256\)

All the line numbers in pypy3.6’s output are correct mod 256, but they all are shown to be under 256.

I cannot reproduce this with PyPy3.5 \(version 7.0.0\) or PyPy2.7 \(version 7.1.0\).


More information about the pypy-issue mailing list