Xavier de Gaye added the comment:

Python 3.5 is still crashing with this test:

$ python jump.py
> jump.py(7)<module>()
-> for i in gen():
(Pdb) break 3
Breakpoint 1 at jump.py:3
(Pdb) continue
> jump.py(3)gen()
-> yield i
(Pdb) step
--Return--
> jump.py(3)gen()->0
-> yield i
(Pdb) jump 2
> jump.py(2)gen()->0
-> for i in range(1):
(Pdb) continue
Segmentation fault (core dumped)


It is true that frame_setlineno() assumes incorrectly that f->f_stacktop is not 
NULL, but the reason of the crash or of the "SystemError: unknown opcode" is 
that PyEval_EvalFrameEx() expects on its invocation f->f_lasti to refer to the 
index of the last instruction executed and sets (and assumes this instruction 
does not have argument) 'next_instr' accordingly to the next byte, while by 
jumping to line 2 we set f->f_lasti to zero and 'SETUP_LOOP', the opcode at 
this index, has an argument.

The attached patch is a slight improvement over the last one.

----------
type: behavior -> crash
versions: +Python 3.5 -Python 2.7, Python 3.3, Python 3.4
Added file: http://bugs.python.org/file35898/default_2.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17288>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to