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
IDLE hangs when selecting Stack View with debug active #67732
Verified on Windows whenever the debugger is active, meaning that a program is running. (Debug On just means that it will become active when code is run.) No stepping is needed; debugger can be pointing to the inital docstring line. For me also, Idle stops and has to be externally closed, as opposed to totally disappearing by itself.
The doc for Stack Viewer says "Show the stack traceback of the last exception". Example:
>>> 1/0
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
>>>
Selecting Stack Viewer pops up a viewer box. This still works after
[DEBUG ON]
>>
turns the debugger on but inactive. Entering anything at the prompt disables viewing the 'last' exception, contrary to my understanding of the short doc. So I might add '(if no other code has been run)' to the doc.
Selecting Stack Viewer while a program is running (sleeping in this next example)
>> import time; time.sleep(10); 1/0
brings up a box after the exception is printed. So 'last exception' can actually be 'next exception'. But in this case, the user process is left 'running' and no '>>> ' prompt appears, and one must Shell -> Restart to do anything further. This is not good behavior.
When one selects Debug -> Debugger while user code is running, Idle brings up a message box "Don't debug now: You can only toggle the debugger when idle". I think Debug -> Stack Viewer should be similarly disabled, though perhaps graying out the menu entry might be better. It could also be grayed out when there the 'last exception' cannot be viewed because other code has been run. Stack Viewer should definitely be ignored when the debugger is active, and I see no need to let people select it *before* an exception occurs and the prompt is displayed. The next menu entry, Auto-open Stack Viewer, takes care of opening upon future exceptions.
changed the title [-]IDLE hangs with debug on and stack viewer[/-][+]IDLE hangs when selecting Stack View with debug active[/+]on Feb 27, 2015
AndrewHarrington commented on Feb 28, 2015
AndrewHarringtonmannequin
MannequinAuthor
More actions
I was using this without looking at documentation, as a newbies would.
Graying and disabling until after an exception makes sense, but even the
menu item name is misleading: any time the program is running there is a
stack that you might want to view. Better labels in the menu than "Stack
Viewer" would be "stack trace" or "stack after exception" (maybe too long)
or "stack after crash".
>
> Terry J. Reedy added the comment:
>
> Verified on Windows whenever the debugger is active, meaning that a
> program is running. (Debug On just means that it will become active when
> code is run.) No stepping is needed; debugger can be pointing to the inital
> docstring line. For me also, Idle stops and has to be externally closed,
> as opposed to totally disappearing by itself.
>
> The doc for Stack Viewer says "Show the stack traceback of the last
> exception". Example:
>
> >>> 1/0
> Traceback (most recent call last):
> File "<pyshell#0>", line 1, in <module>
> 1/0
> ZeroDivisionError: division by zero
> >>>
>
> Selecting Stack Viewer pops up a viewer box. This still works after
> [DEBUG ON]
> >>>
> turns the debugger on but inactive. Entering anything at the prompt
> disables viewing the 'last' exception, contrary to my understanding of the
> short doc. So I might add '(if no other code has been run)' to the doc.
>
> Selecting Stack Viewer while a program is running (sleeping in this next
> example)
>
> >>> import time; time.sleep(10); 1/0
>
> brings up a box after the exception is printed. So 'last exception' can
> actually be 'next exception'. But in this case, the user process is left
> 'running' and no '>>> ' prompt appears, and one must Shell -> Restart to do
> anything further. This is not good behavior.
>
> When one selects Debug -> Debugger while user code is running, Idle brings
> up a message box "Don't debug now: You can only toggle the debugger when
> idle". I think Debug -> Stack Viewer should be similarly disabled, though
> perhaps graying out the menu entry might be better. It could also be grayed
> out when there the 'last exception' cannot be viewed because other code has
> been run. Stack Viewer should definitely be ignored when the debugger is
> active, and I see no need to let people select it *before* an exception
> occurs and the prompt is displayed. The next menu entry, Auto-open Stack
> Viewer, takes care of opening upon future exceptions.
>
>
stage: -> needs patch
title: IDLE hangs with debug on and stack viewer -> IDLE hangs when
selecting Stack View with debug active
--
Dr. Andrew N. Harrington
Computer Science Department
Graduate Program Director gpd@cs.luc.edu
Loyola University Chicago
529 Lewis Tower, 111 E. Pearson St. (Downtown)
104 Loyola Hall, 1032 W. Sheridan Road (Rogers Park) http://www.cs.luc.edu/~anh
Phone: 312-915-7982
Fax: 312-915-7998 aharrin@luc.edu (as professor, not gpd role)
I agree that 'Stack Viewer' does not explain what this does, which is to gives a more detail view of the stack and name bindings after an exception. The doc entry does not either. I will consider 'Stack Trace' or maybe 'Exception Review'. I think a popup message is needed too.
PS. When replying to email, please snip the messages you are responding to (except possible for a line or two). That message sits above yours when viewed on the web page.
Taking this in a different direction, perhaps we can make the stack viewer always work, regardless of whether it is immediately after an exception? Visually inspecting the stack can be useful not just for understanding error cases.
The debugger is an execution controller with an optional current-frame viewer updated whenever execution is paused. It displays both name and value. I believe a current PR addresses the issue of value representations being indefinitely long and possibly overflowing the space allotted.
The stack viewer can view any frame on the stack, but only after an exception. At least currently, on Windows, it omits value names. And there are other issues (bpo-24790). The debugger viewer and stack viewer should be combined with the best features of each (new issues).
Activity
AndrewHarrington commentedon Feb 27, 2015
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
start debugger, open very simple demo file, attached:
run, so debugger starts, step into main()
In debug menu, select Stack Viewer
hangs (apple swirling color wheel forever). Same error is repeatable.
ned-deily commentedon Feb 27, 2015
Thanks for the detailed report. The problem is more general as it is reproducible on Linux X11-based IDLEs as well.
[-]Idle stacker viewer crash OSX[/-][+]IDLE hangs with debug on and stack viewer[/+]terryjreedy commentedon Feb 27, 2015
Verified on Windows whenever the debugger is active, meaning that a program is running. (Debug On just means that it will become active when code is run.) No stepping is needed; debugger can be pointing to the inital docstring line. For me also, Idle stops and has to be externally closed, as opposed to totally disappearing by itself.
The doc for Stack Viewer says "Show the stack traceback of the last exception". Example:
Selecting Stack Viewer pops up a viewer box. This still works after
[DEBUG ON]
Selecting Stack Viewer while a program is running (sleeping in this next example)
When one selects Debug -> Debugger while user code is running, Idle brings up a message box "Don't debug now: You can only toggle the debugger when idle". I think Debug -> Stack Viewer should be similarly disabled, though perhaps graying out the menu entry might be better. It could also be grayed out when there the 'last exception' cannot be viewed because other code has been run. Stack Viewer should definitely be ignored when the debugger is active, and I see no need to let people select it *before* an exception occurs and the prompt is displayed. The next menu entry, Auto-open Stack Viewer, takes care of opening upon future exceptions.
[-]IDLE hangs with debug on and stack viewer[/-][+]IDLE hangs when selecting Stack View with debug active[/+]AndrewHarrington commentedon Feb 28, 2015
I was using this without looking at documentation, as a newbies would.
Graying and disabling until after an exception makes sense, but even the
menu item name is misleading: any time the program is running there is a
stack that you might want to view. Better labels in the menu than "Stack
Viewer" would be "stack trace" or "stack after exception" (maybe too long)
or "stack after crash".
On Fri, Feb 27, 2015 at 4:49 PM, Terry J. Reedy <report@bugs.python.org>
wrote:
--
Dr. Andrew N. Harrington
Computer Science Department
Graduate Program Director gpd@cs.luc.edu
Loyola University Chicago
529 Lewis Tower, 111 E. Pearson St. (Downtown)
104 Loyola Hall, 1032 W. Sheridan Road (Rogers Park)
http://www.cs.luc.edu/~anh
Phone: 312-915-7982
Fax: 312-915-7998
aharrin@luc.edu (as professor, not gpd role)
terryjreedy commentedon Feb 28, 2015
I agree that 'Stack Viewer' does not explain what this does, which is to gives a more detail view of the stack and name bindings after an exception. The doc entry does not either. I will consider 'Stack Trace' or maybe 'Exception Review'. I think a popup message is needed too.
PS. When replying to email, please snip the messages you are responding to (except possible for a line or two). That message sits above yours when viewed on the web page.
terryjreedy commentedon Jun 28, 2018
This crashes or hangs the user execution process, but not the IDLE process. So Shell => 'Restart Shell cntl-F6' still works.
taleinat commentedon Nov 15, 2019
Taking this in a different direction, perhaps we can make the stack viewer always work, regardless of whether it is immediately after an exception? Visually inspecting the stack can be useful not just for understanding error cases.
taleinat commentedon Nov 15, 2019
Well, perhaps not "always", e.g. probably not while user code is running.
terryjreedy commentedon Jan 28, 2021
New changeset 23a567c by Zackery Spytz in branch 'master':
bpo-23544: Disable IDLE Stack Viewer when running user code (GH-17163)
23a567c
miss-islington commentedon Jan 28, 2021
New changeset 6d87dec by Miss Islington (bot) in branch '3.9':
bpo-23544: Disable IDLE Stack Viewer when running user code (GH-17163)
6d87dec
terryjreedy commentedon Jan 29, 2021
New changeset 901a983 by Miss Islington (bot) in branch '3.8':
bpo-23544: Disable IDLE Stack Viewer when running user code (GH-17163) (bpo-24366)
901a983
terryjreedy commentedon Jan 29, 2021
Tal, I agree with you.
The debugger is an execution controller with an optional current-frame viewer updated whenever execution is paused. It displays both name and value. I believe a current PR addresses the issue of value representations being indefinitely long and possibly overflowing the space allotted.
The stack viewer can view any frame on the stack, but only after an exception. At least currently, on Windows, it omits value names. And there are other issues (bpo-24790). The debugger viewer and stack viewer should be combined with the best features of each (new issues).
In the meanwhile, I finished PR and merged.