Message222555
| Author |
xdegaye |
| Recipients |
benjamin.peterson, georg.brandl, jcea, xdegaye |
| Date |
2014年07月08日.10:57:57 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1404817080.03.0.146993659633.issue17288@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
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. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2014年07月08日 10:58:00 | xdegaye | set | recipients:
+ xdegaye, georg.brandl, jcea, benjamin.peterson |
| 2014年07月08日 10:58:00 | xdegaye | set | messageid: <1404817080.03.0.146993659633.issue17288@psf.upfronthosting.co.za> |
| 2014年07月08日 10:57:59 | xdegaye | link | issue17288 messages |
| 2014年07月08日 10:57:59 | xdegaye | create |
|