This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Created on 2018-07-14 20:54 by vandyswa, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 8517 merged python-dev, 2018-07-28 10:40
Messages (5)
msg321661 - (view) Author: Andrew Valencia (vandyswa) Date: 2018-07-14 20:54
Build with -DLLTRACE, then: >>> __lltrace__ = 1 >>> a = [1, 2, 3] 0: 100, 0 push 1 3: 100, 1 push 2 6: 100, 2 push 3 9: 103, 3 pop 3 pop 2 pop 1 push [1, 2, 3] 12: 90, 0 pop [1, 2, 3] 15: 100, 3 push None 18: 83 pop None >>> a[0] = 1 0: 100, 0 push 1 3: 101, 0 push [1, 2, 3] 6: 100, 1 push 0 9: 60Program received signal SIGSEGV, Segmentation fault. 0x004535ae in internal_print (op=0x84002364, fp=0xb7f3bd60 <_IO_2_1_stdout_>, flags=0, nesting=0) at Objects/object.c:293 293 if (op->ob_refcnt <= 0) (gdb) bt #0 0x004535ae in internal_print (op=0x84002364, fp=0xb7f3bd60 <_IO_2_1_stdout_>, flags=0, nesting=0) at Objects/object.c:293 #1 0x0045370a in PyObject_Print (op=0x84002364, fp=0xb7f3bd60 <_IO_2_1_stdout_>, flags=0) at Objects/object.c:330 #2 0x004ada11 in prtrace (v=0x84002364, str=0x54b61d "stackadj") at Python/ceval.c:3979 #3 0x004a505b in PyEval_EvalFrameEx (f=0xb7d11994, throwflag=0) at Python/ceval.c:1919 #4 0x004ace97 in PyEval_EvalCodeEx (co=0xb7ce7bf0, globals=0xb7d7c714, locals=0xb7d7c714, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3604 #5 0x004a0671 in PyEval_EvalCode (co=0xb7ce7bf0, globals=0xb7d7c714, locals=0xb7d7c714) at Python/ceval.c:669 #6 0x004d26ab in run_mod (mod=0x646d78, filename=0x53ddfe "<stdin>", globals=0xb7d7c714, locals=0xb7d7c714, flags=0xbffff568, arena=0x5f2b10) at Python/pythonrun.c:1385 #7 0x004d1106 in PyRun_InteractiveOneFlags (fp=0xb7f3b5a0 <_IO_2_1_stdin_>, filename=0x53ddfe "<stdin>", flags=0xbffff568) at Python/pythonrun.c:866 #8 0x004d0e72 in PyRun_InteractiveLoopFlags (fp=0xb7f3b5a0 <_IO_2_1_stdin_>, filename=0x53ddfe "<stdin>", flags=0xbffff568) at Python/pythonrun.c:786 #9 0x004d0d1a in PyRun_AnyFileExFlags (fp=0xb7f3b5a0 <_IO_2_1_stdin_>, filename=0x53ddfe "<stdin>", closeit=0, flags=0xbffff568) at Python/pythonrun.c:755 #10 0x0041d798 in Py_Main (argc=1, argv=0xbffff694) at Modules/main.c:645 #11 0x0041c5eb in main (argc=1, argv=0xbffff694) at ./Modules/python.c:20
msg322559 - (view) Author: Petr Viktorin (petr.viktorin) * (Python committer) Date: 2018-07-28 13:18
The problem here is that tracing for STACKADJ prints out the top of the stack *after* adjustment. This is OK for growing the stack, but not for shrinking it (e.g. calling STACKADJ(-3) pops off three things at once, which can leave TOP undefined when it's printed out). On the EuroPython sprints, I recommended splitting STACKADJ into STACKADJ_GROW and STACKADJ_SHRINK, since the printing behavior should be different. This is performance-critical code; it needs to be reviewed carefully.
msg322817 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2018-07-31 20:47
By the way, see also bpo-25571.
msg322819 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2018-07-31 20:55
 New changeset 8ed317f1ca42a43df14282bbc3ccc0b5610432f4 by Victor Stinner (costypetrisor) in branch 'master': bpo-34113: Fix a crash when using LLTRACE is on (GH-8517) https://github.com/python/cpython/commit/8ed317f1ca42a43df14282bbc3ccc0b5610432f4 
msg322820 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2018-07-31 20:58
Thanks Constantin Petrisor to fix and thanks Andrew Valencia for the bug report! It was the first time that I see a bug report on LLTRACE on the last 5 years, it seems like almost no one uses it. Likely because you need to compile Python manually (or find a binary compiled in debug mode). So I don't think that it's worth it to backport the fix to 2.7, 3.6 and 3.7 branches. I'm not comfortable to modify ceval.c in stable branches.
History
Date User Action Args
2022-04-11 14:59:03adminsetgithub: 78294
2018-07-31 20:58:45vstinnersetstatus: open -> closed
resolution: fixed
messages: + msg322820

stage: patch review -> resolved
2018-07-31 20:55:17vstinnersetmessages: + msg322819
2018-07-31 20:47:19vstinnersetnosy: + vstinner
messages: + msg322817
2018-07-28 13:18:32petr.viktorinsetmessages: + msg322559
2018-07-28 13:10:52petr.viktorinsetnosy: + petr.viktorin
2018-07-28 10:40:46python-devsetkeywords: + patch
stage: patch review
pull_requests: + pull_request8033
2018-07-14 20:54:22vandyswacreate