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
If you have a dead process in a debugger and press the Into, the image hangs. For example, if you evaluate
| process context |
process := [ ] newProcess.
context := process suspendedContext.
context pc: nil.
process debug
and then hit the Into button, the image hangs. It appears that I get an ever growing stack of CompiledMethod(Object)>>at:. Here's the stack of one of my runs:
ByteString(SequenceableCollection)>>do:
ZnNewLineWriterStream(Stream)>>nextPutAll:
ZnNewLineWriterStream(WriteStream)>>nextPutAll:
Context>>printOn:
ZnNewLineWriterStream(Stream)>>print:
Context>>errorReportOn:
[ :logger |
logger
nextPutAll: 'THERE_BE_DRAGONS_HERE';
cr;
nextPutAll: errMsg;
cr.
"just print the error message if no context is given"
aContext ifNotNil: [ aContext errorReportOn: logger ].
" write some type of separator"
logger
nextPutAll: (String new: 79 withAll: $-);
cr;
cr ] in SmalltalkImage>>logError:inContext:
[ logStream := self openLog.
aMonadicBlock value: logStream ] in SmalltalkImage>>logDuring:
BlockClosure>>ensure:
SmalltalkImage>>logDuring:
SmalltalkImage>>logError:inContext:
[ Smalltalk logError: name inContext: interruptedContext ] in [ [ Smalltalk logError: name inContext: interruptedContext ]
ifError: [ ] ] in DebugSession>>logStackToFileIfNeeded
BlockClosure>>on:do:
BlockClosure>>ifError:
[ [ Smalltalk logError: name inContext: interruptedContext ]
ifError: [ ] ] in DebugSession>>logStackToFileIfNeeded
BlockClosure>>ensure:
[ watchdog resume. "start up the watchdog"
self
ensure: [ "evaluate the receiver"
theProcess := nil. "it has completed, so ..."
delay delaySemaphore signal "arrange for the watchdog to exit" ] ] in BlockClosure>>valueWithin:onTimeout:
BlockClosure>>on:do:
BlockClosure>>valueWithin:onTimeout:
DebugSession>>logStackToFileIfNeeded
MorphicUIManager>>debugProcess:context:label:fullView:notification:
MorphicUIManager(UIManager)>>debugProcess:context:label:fullView:
Process>>debug:title:full:
Process>>debug:title:
SubscriptOutOfBounds(Exception)>>debug
MorphicUIManager>>unhandledErrorDefaultAction:
UnhandledError>>defaultAction
UndefinedObject>>handleSignal:
UnhandledError(Exception)>>signal
UnhandledError class>>signalForException:
SubscriptOutOfBounds(Error)>>defaultAction
UndefinedObject>>handleSignal:
SubscriptOutOfBounds(Exception)>>pass
[ :ex |
ActiveWorld := priorWorld.
ActiveEvent := priorEvent.
ActiveHand := priorHand.
ex pass ] in WorldMorph>>becomeActiveDuring:
BlockClosure>>cull:
Context>>evaluateSignal:
Context>>handleSignal:
SubscriptOutOfBounds(Exception)>>signal
SubscriptOutOfBounds class>>signalFor:lowerBound:upperBound:in:
SubscriptOutOfBounds class>>signalFor:lowerBound:upperBound:
SubscriptOutOfBounds class>>signalFor:
CompiledMethod(Object)>>errorSubscriptBounds:
CompiledMethod(Object)>>at:
CompiledMethod(Object)>>at:
...a few hundred more at: methods...
CompiledMethod(Object)>>at:
CompiledMethod(Object)>>at:
CompiledMethod(SequenceableCollection)>>collect:
SmallInteger(Number)>>adaptToCollection:andSend:
CompiledMethod(Collection)>>//
Context(InstructionStream)>>interpretNextV3PlusClosureInstructionFor:
EncoderForV3PlusClosures class>>interpretNextInstructionFor:in:
Context(InstructionStream)>>interpretNextInstructionFor:
Context>>step
[ self suspendedContext == aContext
ifTrue: [ suspendedContext := suspendedContext step ]
ifFalse: [ self complete: (self calleeOf: aContext) ] ] in Process>>step:
BlockClosure>>ensure:
Process>>evaluate:onBehalfOf:
Process>>step:
DebugSession>>stepInto:
StepIntoDebugAction>>executeAction
StepIntoDebugAction(DebugAction)>>execute
[ self execute ] in StepIntoDebugAction(DebugAction)>>asGlamourAction
BlockClosure>>glamourValueWithArgs:
GLMGenericAction(GLMAction)>>actOn:
GLMGenericAction(GLMAction)>>morphicActOn:
GLMPluggableButtonMorph(PluggableButtonMorph)>>performAction:
[ :m |
(m containsPoint: evt cursorPoint)
ifTrue: [ m enabled
ifTrue: [ m performAction: evt ] ] ] in GLMPluggableButtonMorph(PluggableButtonMorph)>>mouseUp:
Array(SequenceableCollection)>>do:
GLMPluggableButtonMorph(PluggableButtonMorph)>>mouseUp:
GLMPluggableButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
GLMPluggableButtonMorph(Morph)>>handleEvent:
GLMPluggableButtonMorph(Morph)>>handleFocusEvent:
[ ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ] in HandMorph>>sendFocusEvent:to:clear:
BlockClosure>>on:do:
WorldMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEventsFromQueue:
HandMorph>>processEvents
[ :h |
self activeHand: h.
h processEvents.
self activeHand: nil ] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
WorldMorph>>doOneCycle
WorldMorph class>>doOneCycle
[ [ WorldMorph doOneCycle.
Processor yield.
false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess
[ self value.
Processor terminateActive ] in BlockClosure>>newProcess
The text was updated successfully, but these errors were encountered:
In P9, the debugger does not allows you to do that (buttons are disabled) - except that your examples highlights another bug in the debugger (will fix).
Did you step the dead context on purpose, and how should it work? Or would the stepping being disabled with a notification that you cannot step a dead context suffice?
If you have a dead process in a debugger and press the
Into
, the image hangs. For example, if you evaluateand then hit the
Into
button, the image hangs. It appears that I get an ever growing stack ofCompiledMethod(Object)>>at:
. Here's the stack of one of my runs:The text was updated successfully, but these errors were encountered: