Emergency evaluator due to MNU in hasContentsInExplorer

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

Emergency evaluator due to MNU in hasContentsInExplorer

Jakob Reschke
Hello,

I updated my Trunk image this morning and just got an emergency
evaluator popping up. I seem to have a bug in a hasContentsInExplorer
method of one of my classes, but I didn't think that would lead to an
emergency...

At least it continues quite normally if I press any key. Got a bunch
of debuggers and could fix the error there.

Attached you find the SqueakDebug.log. Now I will type the stack trace
from the evaluator... Is there a way to copy that except for taking a
screenshot?

***System error handling failed***
MessageNotUnderstood: UndefinedObject>>notEmpty
Project class>>tryEmergencyEvaluatorForRecovery:
AnimMorphicProject(Project)>>primitiveError:
AnimMorphicProject(Project)>>recursiveError:
AnimMorphicProject(MorphicProject)>>recursiveError:
ECToolSet class(StandardToolSet class)>>handleRecursiveError:
ToolSet class>>handleRecursiveError:
Debugger class>>openOn:context:label:contents:fullView:
ECToolSet class(StandardToolSet
class)>>debugProcess:context:label:contents:fullView:
ToolSet class>>debugProcess:context:label:contents:fullView:
Process>>debug:title:full:contents:
Process>>debug:title:full:
Process>>debug:title:
ECToolSet class(StandardToolSet class)>>handleError:
ToolSet class>>handleError:
UnhandledError>>defaultAction
UndefinedObject>>handleSignal:
UnhandledError(Exception)>>signal
UnhandledError class>>signalForException:
MessageNotUnderstood(Error)>>defaultAction
MessageNotUnderstood>>defaultAction
-----------------------------

Kind regards,
Jakob



SqueakDebug.log (26K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Christoph Thiede

Hi Jakob,


Now I will type the stack trace from the evaluator... Is there a way to copy that except for taking a screenshot?


Wow, did you really retype all these lines instead of making a screenshot? :D

I'd recommend this one:


Debugger new
process: Processor activeProcess context: thisContext;
copyBugReportToClipboard

or, alternatively, copy the relevant parts from #copyBugReportToClipboard.


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Samstag, 22. Februar 2020 17:09:40
An: [hidden email]
Betreff: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
 
Hello,

I updated my Trunk image this morning and just got an emergency
evaluator popping up. I seem to have a bug in a hasContentsInExplorer
method of one of my classes, but I didn't think that would lead to an
emergency...

At least it continues quite normally if I press any key. Got a bunch
of debuggers and could fix the error there.

Attached you find the SqueakDebug.log. Now I will type the stack trace
from the evaluator... Is there a way to copy that except for taking a
screenshot?

***System error handling failed***
MessageNotUnderstood: UndefinedObject>>notEmpty
Project class>>tryEmergencyEvaluatorForRecovery:
AnimMorphicProject(Project)>>primitiveError:
AnimMorphicProject(Project)>>recursiveError:
AnimMorphicProject(MorphicProject)>>recursiveError:
ECToolSet class(StandardToolSet class)>>handleRecursiveError:
ToolSet class>>handleRecursiveError:
Debugger class>>openOn:context:label:contents:fullView:
ECToolSet class(StandardToolSet
class)>>debugProcess:context:label:contents:fullView:
ToolSet class>>debugProcess:context:label:contents:fullView:
Process>>debug:title:full:contents:
Process>>debug:title:full:
Process>>debug:title:
ECToolSet class(StandardToolSet class)>>handleError:
ToolSet class>>handleError:
UnhandledError>>defaultAction
UndefinedObject>>handleSignal:
UnhandledError(Exception)>>signal
UnhandledError class>>signalForException:
MessageNotUnderstood(Error)>>defaultAction
MessageNotUnderstood>>defaultAction
-----------------------------

Kind regards,
Jakob


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Jakob Reschke
Am Sa., 22. Feb. 2020 um 17:17 Uhr schrieb Thiede, Christoph
<[hidden email]>:
>
> Wow, did you really retype all these lines instead of making a screenshot? :D

Yes, I prefer having the text as text if it is about text and not
graphics. Same for method texts.

>
> I'd recommend this one:
>
>
> Debugger new
> process: Processor activeProcess context: thisContext;
> copyBugReportToClipboard
>
> or, alternatively, copy the relevant parts from #copyBugReportToClipboard.

Maybe I will think of it next time I get this thing and will type that
instead of the stack trace. ;-)

Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Christoph Thiede
Or you use something like this - at a first glance, it works surprisingly well:
www.structurise.com
Screenshot OCR online - convert picture to text using clipboard copy and paste, drag and drop or upload. Crop the image online. Preserve sizes and colors.
:-)

Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Samstag, 22. Februar 2020 17:29:25
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
 
Am Sa., 22. Feb. 2020 um 17:17 Uhr schrieb Thiede, Christoph
<[hidden email]>:
>
> Wow, did you really retype all these lines instead of making a screenshot? :D

Yes, I prefer having the text as text if it is about text and not
graphics. Same for method texts.

>
> I'd recommend this one:
>
>
> Debugger new
> process: Processor activeProcess context: thisContext;
> copyBugReportToClipboard
>
> or, alternatively, copy the relevant parts from #copyBugReportToClipboard.

Maybe I will think of it next time I get this thing and will type that
instead of the stack trace. ;-)



Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Tobias Pape

> On 22.02.2020, at 17:39, Thiede, Christoph <[hidden email]> wrote:
>
> Or you use something like this - at a first glance, it works surprisingly well:
> Screenshot OCR online - clipboard, drag and drop, upload. Online crop.
> www.structurise.com
> Screenshot OCR online - convert picture to text using clipboard copy and paste, drag and drop or upload. Crop the image online. Preserve sizes and colors.
> :-)

But that does not create text. Which is much more helpful than images in these contexts.
-t

> Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
> Gesendet: Samstag, 22. Februar 2020 17:29:25
> An: The general-purpose Squeak developers list
> Betreff: Re: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
>  
> Am Sa., 22. Feb. 2020 um 17:17 Uhr schrieb Thiede, Christoph
> <[hidden email]>:
> >
> > Wow, did you really retype all these lines instead of making a screenshot? :D
>
> Yes, I prefer having the text as text if it is about text and not
> graphics. Same for method texts.
>
> >
> > I'd recommend this one:
> >
> >
> > Debugger new
> > process: Processor activeProcess context: thisContext;
> > copyBugReportToClipboard
> >
> > or, alternatively, copy the relevant parts from #copyBugReportToClipboard.
>
> Maybe I will think of it next time I get this thing and will type that
> instead of the stack trace. ;-)



Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Tobias Pape

> On 22.02.2020, at 19:27, Tobias Pape <[hidden email]> wrote:
>
>
>> On 22.02.2020, at 17:39, Thiede, Christoph <[hidden email]> wrote:
>>
>> Or you use something like this - at a first glance, it works surprisingly well:
>> Screenshot OCR online - clipboard, drag and drop, upload. Online crop.
>> www.structurise.com
>> Screenshot OCR online - convert picture to text using clipboard copy and paste, drag and drop or upload. Crop the image online. Preserve sizes and colors.
>> :-)
>
> But that does not create text. Which is much more helpful than images in these contexts.
> -t

ignore that… silly me…

>
>> Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
>> Gesendet: Samstag, 22. Februar 2020 17:29:25
>> An: The general-purpose Squeak developers list
>> Betreff: Re: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
>>
>> Am Sa., 22. Feb. 2020 um 17:17 Uhr schrieb Thiede, Christoph
>> <[hidden email]>:
>>>
>>> Wow, did you really retype all these lines instead of making a screenshot? :D
>>
>> Yes, I prefer having the text as text if it is about text and not
>> graphics. Same for method texts.
>>
>>>
>>> I'd recommend this one:
>>>
>>>
>>> Debugger new
>>> process: Processor activeProcess context: thisContext;
>>> copyBugReportToClipboard
>>>
>>> or, alternatively, copy the relevant parts from #copyBugReportToClipboard.
>>
>> Maybe I will think of it next time I get this thing and will type that
>> instead of the stack trace. ;-)
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

timrowledge


> On 2020-02-22, at 10:28 AM, Tobias Pape <[hidden email]> wrote:
>
>
>> On 22.02.2020, at 19:27, Tobias Pape <[hidden email]> wrote:
>>
>>
>>> On 22.02.2020, at 17:39, Thiede, Christoph <[hidden email]> wrote:
>>>
>>> Or you use something like this - at a first glance, it works surprisingly well:
>>> Screenshot OCR online - clipboard, drag and drop, upload. Online crop.
>>> www.structurise.com
>>> Screenshot OCR online - convert picture to text using clipboard copy and paste, drag and drop or upload. Crop the image online. Preserve sizes and colors.
>>> :-)
>>
>> But that does not create text. Which is much more helpful than images in these contexts.
>> -t
>
> ignore that… silly me…

The real problem is that it seems to be Windows only. Sad. Especially when the actual algorithm and processing code is almost certainly completely machine agnostic.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
This is all a lot simpler and a lot more complicated than you could possibly imagine



Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

David T. Lewis
In reply to this post by Jakob Reschke
Hi Jakob,

I can't quite see what's going on here, but if you think that
you may be able to reproduce the failure, then try adding an
MVC project as a parent of the Morphic (or AnimMorphicProject)
that you are in while doing the update. When the failure happens,
the system will try to open a debugger in the MVC project (see
Project>>primitiveError:).

If that works, then you will be able to work with a real debugger
rather than the emergency evaluator.

There is probably some recursive error going on here, and you
should be able to find it if you can get into a debugger. I'll
note that the MNU at the top of the stack seems odd to me, I
can't quite figure out where that would be coming from, but I
wonder if the #errorMessage is nil for some reason? I still can't
see where the #notEmpty send is coming from though.

HTH,
Dave


On Sat, Feb 22, 2020 at 05:09:40PM +0100, Jakob Reschke wrote:

> Hello,
>
> I updated my Trunk image this morning and just got an emergency
> evaluator popping up. I seem to have a bug in a hasContentsInExplorer
> method of one of my classes, but I didn't think that would lead to an
> emergency...
>
> At least it continues quite normally if I press any key. Got a bunch
> of debuggers and could fix the error there.
>
> Attached you find the SqueakDebug.log. Now I will type the stack trace
> from the evaluator... Is there a way to copy that except for taking a
> screenshot?
>
> ***System error handling failed***
> MessageNotUnderstood: UndefinedObject>>notEmpty
> Project class>>tryEmergencyEvaluatorForRecovery:
> AnimMorphicProject(Project)>>primitiveError:
> AnimMorphicProject(Project)>>recursiveError:
> AnimMorphicProject(MorphicProject)>>recursiveError:
> ECToolSet class(StandardToolSet class)>>handleRecursiveError:
> ToolSet class>>handleRecursiveError:
> Debugger class>>openOn:context:label:contents:fullView:
> ECToolSet class(StandardToolSet
> class)>>debugProcess:context:label:contents:fullView:
> ToolSet class>>debugProcess:context:label:contents:fullView:
> Process>>debug:title:full:contents:
> Process>>debug:title:full:
> Process>>debug:title:
> ECToolSet class(StandardToolSet class)>>handleError:
> ToolSet class>>handleError:
> UnhandledError>>defaultAction
> UndefinedObject>>handleSignal:
> UnhandledError(Exception)>>signal
> UnhandledError class>>signalForException:
> MessageNotUnderstood(Error)>>defaultAction
> MessageNotUnderstood>>defaultAction
> -----------------------------
>
> Kind regards,
> Jakob


>


Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

David T. Lewis
I should add that you can evaluate "MVCProject new beTopProject" to
add an MVC project to support emergency recovery.

This will be done automatically in the 5.3 release process (thanks
Marcel) but if your current image does not have an MVC project you
can add it in this way.

Dave

On Sat, Feb 22, 2020 at 04:13:17PM -0500, David T. Lewis wrote:

> Hi Jakob,
>
> I can't quite see what's going on here, but if you think that
> you may be able to reproduce the failure, then try adding an
> MVC project as a parent of the Morphic (or AnimMorphicProject)
> that you are in while doing the update. When the failure happens,
> the system will try to open a debugger in the MVC project (see
> Project>>primitiveError:).
>
> If that works, then you will be able to work with a real debugger
> rather than the emergency evaluator.
>
> There is probably some recursive error going on here, and you
> should be able to find it if you can get into a debugger. I'll
> note that the MNU at the top of the stack seems odd to me, I
> can't quite figure out where that would be coming from, but I
> wonder if the #errorMessage is nil for some reason? I still can't
> see where the #notEmpty send is coming from though.
>
> HTH,
> Dave
>
>
> On Sat, Feb 22, 2020 at 05:09:40PM +0100, Jakob Reschke wrote:
> > Hello,
> >
> > I updated my Trunk image this morning and just got an emergency
> > evaluator popping up. I seem to have a bug in a hasContentsInExplorer
> > method of one of my classes, but I didn't think that would lead to an
> > emergency...
> >
> > At least it continues quite normally if I press any key. Got a bunch
> > of debuggers and could fix the error there.
> >
> > Attached you find the SqueakDebug.log. Now I will type the stack trace
> > from the evaluator... Is there a way to copy that except for taking a
> > screenshot?
> >
> > ***System error handling failed***
> > MessageNotUnderstood: UndefinedObject>>notEmpty
> > Project class>>tryEmergencyEvaluatorForRecovery:
> > AnimMorphicProject(Project)>>primitiveError:
> > AnimMorphicProject(Project)>>recursiveError:
> > AnimMorphicProject(MorphicProject)>>recursiveError:
> > ECToolSet class(StandardToolSet class)>>handleRecursiveError:
> > ToolSet class>>handleRecursiveError:
> > Debugger class>>openOn:context:label:contents:fullView:
> > ECToolSet class(StandardToolSet
> > class)>>debugProcess:context:label:contents:fullView:
> > ToolSet class>>debugProcess:context:label:contents:fullView:
> > Process>>debug:title:full:contents:
> > Process>>debug:title:full:
> > Process>>debug:title:
> > ECToolSet class(StandardToolSet class)>>handleError:
> > ToolSet class>>handleError:
> > UnhandledError>>defaultAction
> > UndefinedObject>>handleSignal:
> > UnhandledError(Exception)>>signal
> > UnhandledError class>>signalForException:
> > MessageNotUnderstood(Error)>>defaultAction
> > MessageNotUnderstood>>defaultAction
> > -----------------------------
> >
> > Kind regards,
> > Jakob
>
>
> >
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Jakob Reschke
In reply to this post by David T. Lewis
Am Sa., 22. Feb. 2020 um 22:13 Uhr schrieb David T. Lewis <[hidden email]>:
>...while doing the update.

Sorry, I did not mean that it happened during or because of the update
-- I merely intended to indicate that my image is up to date.

I just reproduced it in a fresh image, using the following:

Enable "open tools attached to mouse cursor" preference.

BadClass >>
hasContentsInExplorer
   ^ nil notEmpty

{BadClass new} <--- right click, explore

The ObjectExplorer has to be attached to the Hand to trigger the issue.
That's why you must "explore" via the menu, it does not work by
pressing Cmd-Shift-i.

My expectation is that the drawing error is caught, the explorer tree
turns red, and a debugger opens in the same project. This does happen
when the explorer is not attached to the hand.

It looks like the debugger is started in the new UI process, where it
reaches this:

[] in MorphicDebugger class>>openOn: processToDebug context: context
label: title contents: contentsStringOrNil fullView: full
   ...
   "Try drawing the debugger tool at least once to avoid freeze."
   debugger topView ifNotNil: [:window | window world displayWorld.
"Not safely!"].

In WorldState>>displayWorld:submorphs: it attempts to draw all the
hands. The one hand still has the broken ObjectExplorer SystemWindow
as a submorph. Thus, the explorer is drawn, the error is triggered
once again, and the second debugger notices a recursive invocation.

Below is the error report from the MVC debugger (you may want to go
straight ahead to the bottom because the detailed stack report does
not reach so far).

Kind regards,
Jakob



23 February 2020 7:17:54.275866 pm

VM: Win32 - Smalltalk
Image: Squeak5.3beta [latest update: #19402]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Squeak\smalltalkCi
Trusted Dir C:\Squeak\smalltalkCi\Jakob
Untrusted Dir C:\Users\Jakob\Documents\My Squeak

MorphicProject>>suspendProcessForDebug
Receiver: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(2434915) [world]
Arguments and temporary variables:
p: a Process in MorphicProject>>suspendProcessForDebug
Receiver's instance variables:
dependents: nil
world: a PasteUpMorph(2434915) [world]
uiManager: a MorphicUIManager
changeSet: a ChangeSet named hasContentsInExplorer
transcript: a TranscriptStream
parentProject: a MVCProject (Unnamed) in a ControlManager
previousProject: a MVCProject (Unnamed) in a ControlManager
displayDepth: 32
viewSize: 151@132
thumbnail: Form(1024x768x32)
nextProject: nil
projectParameters: an IdentityDictionary(#PrevailingProjectFlags->an
IdentityDictionary...etc...
version: nil
urlList: nil
lastDirectory: nil
lastSavedAtSeconds: nil
projectPreferenceFlagDictionary: an
IdentityDictionary(#enablePortraitMode->fal...etc...
resourceManager: a ResourceManager
uiProcess: nil

MVCProject(Project)>>enterForEmergencyRecovery
Receiver: a MVCProject (Unnamed) in a ControlManager
Arguments and temporary variables:
leavingProject: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(2434...etc...
process: a Process in MorphicProject>>suspendProcessForDebug
titleForDebuggerWindow: 'FATAL PROJECT ERROR: Project was
''hasContentsInExplor...etc...
Receiver's instance variables:
dependents: nil
world: a ControlManager
uiManager: a MVCUIManager
changeSet: a ChangeSet named Unnamed
transcript: a TranscriptStream
parentProject: a MVCProject (Unnamed) in a ControlManager
previousProject: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(243...etc...
displayDepth: 32
viewSize: 128@96
thumbnail: DisplayScreen(128x96x32)
nextProject: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(2434915...etc...
projectParameters: an IdentityDictionary(#disabledGlobalFlapIDs->a
Set('Paintin...etc...
version: nil
urlList: nil
lastDirectory: nil
lastSavedAtSeconds: nil
projectPreferenceFlagDictionary: an
IdentityDictionary(#enablePortraitMode->fal...etc...
resourceManager: nil

Project class>>tryOtherProjectForRecovery:
Receiver: Project
Arguments and temporary variables:
errorMessage: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
safeProject: a MVCProject (Unnamed) in a ControlManager
nextProject: a MVCProject (Unnamed) in a ControlManager
p: a MVCProject (Unnamed) in a ControlManager
Receiver's instance variables:
superclass: Model
methodDict: a MethodDictionary(size 256)
format: 65554
instanceVariables: #('world' 'uiManager' 'changeSet' 'transcript'
'parentProjec...etc...
organization: ('accessing' changeSet color displayDepth displayDepth:
findProjectView:...etc...
subclasses: {MVCProject . MorphicProject}
name: #Project
classPool: a Dictionary(#AllProjects->an OrderedCollection(a
MorphicProject (ha...etc...
sharedPools: nil
environment: Smalltalk
category: #'System-Support'

MorphicProject(Project)>>primitiveError:
Receiver: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(2434915) [world]
Arguments and temporary variables:
errorMessage: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
Receiver's instance variables:
dependents: nil
world: a PasteUpMorph(2434915) [world]
uiManager: a MorphicUIManager
changeSet: a ChangeSet named hasContentsInExplorer
transcript: a TranscriptStream
parentProject: a MVCProject (Unnamed) in a ControlManager
previousProject: a MVCProject (Unnamed) in a ControlManager
displayDepth: 32
viewSize: 151@132
thumbnail: Form(1024x768x32)
nextProject: nil
projectParameters: an IdentityDictionary(#PrevailingProjectFlags->an
IdentityDictionary...etc...
version: nil
urlList: nil
lastDirectory: nil
lastSavedAtSeconds: nil
projectPreferenceFlagDictionary: an
IdentityDictionary(#enablePortraitMode->fal...etc...
resourceManager: a ResourceManager
uiProcess: nil

MorphicProject(Project)>>recursiveError:
Receiver: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(2434915) [world]
Arguments and temporary variables:
errorMessage: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
Receiver's instance variables:
dependents: nil
world: a PasteUpMorph(2434915) [world]
uiManager: a MorphicUIManager
changeSet: a ChangeSet named hasContentsInExplorer
transcript: a TranscriptStream
parentProject: a MVCProject (Unnamed) in a ControlManager
previousProject: a MVCProject (Unnamed) in a ControlManager
displayDepth: 32
viewSize: 151@132
thumbnail: Form(1024x768x32)
nextProject: nil
projectParameters: an IdentityDictionary(#PrevailingProjectFlags->an
IdentityDictionary...etc...
version: nil
urlList: nil
lastDirectory: nil
lastSavedAtSeconds: nil
projectPreferenceFlagDictionary: an
IdentityDictionary(#enablePortraitMode->fal...etc...
resourceManager: a ResourceManager
uiProcess: nil

MorphicProject>>recursiveError:
Receiver: a MorphicProject (hasContentsInExplorer) in a
PasteUpMorph(2434915) [world]
Arguments and temporary variables:
msg: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
Receiver's instance variables:
dependents: nil
world: a PasteUpMorph(2434915) [world]
uiManager: a MorphicUIManager
changeSet: a ChangeSet named hasContentsInExplorer
transcript: a TranscriptStream
parentProject: a MVCProject (Unnamed) in a ControlManager
previousProject: a MVCProject (Unnamed) in a ControlManager
displayDepth: 32
viewSize: 151@132
thumbnail: Form(1024x768x32)
nextProject: nil
projectParameters: an IdentityDictionary(#PrevailingProjectFlags->an
IdentityDictionary...etc...
version: nil
urlList: nil
lastDirectory: nil
lastSavedAtSeconds: nil
projectPreferenceFlagDictionary: an
IdentityDictionary(#enablePortraitMode->fal...etc...
resourceManager: a ResourceManager
uiProcess: nil

StandardToolSet class>>handleRecursiveError:
Receiver: StandardToolSet
Arguments and temporary variables:
description: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary()
format: 0
instanceVariables: nil
organization: ('as yet unclassified')

subclasses: {CommandLineToolSet . DebuggerTestsToolSet}
name: #StandardToolSet
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Tools-Base'

ToolSet class>>handleRecursiveError:
Receiver: ToolSet
Arguments and temporary variables:
description: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
ts: StandardToolSet
Receiver's instance variables:
superclass: AppRegistry
methodDict: a MethodDictionary()
format: 0
instanceVariables: nil
organization: ('as yet unclassified')

subclasses: nil
name: #ToolSet
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'System-Applications'
registeredClasses: an OrderedCollection(StandardToolSet CommandLineToolSet)
default: StandardToolSet

Debugger class>>openOn:context:label:contents:fullView:
Receiver: Debugger
Arguments and temporary variables:
process: a Process in MorphicProject>>suspendProcessForDebug
context: UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
title: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
contentsStringOrNil: nil
bool: false
ap: a Process in MorphicProject>>suspendProcessForDebug
Receiver's instance variables:
superclass: CodeHolder
methodDict: a MethodDictionary(size 147)
format: 65558
instanceVariables: #('interruptedProcess' 'contextStack'
'contextStackIndex' 'c...etc...
organization: ('accessing' contents contents:notifying:
contextStackTop contextVariablesInspector...etc...
subclasses: {TestCaseDebugger . MorphicDebugger . MVCDebugger}
name: #Debugger
classPool: a Dictionary(#ContextStackKeystrokes->a
Dictionary($T->#stepIntoBlock...etc...
sharedPools: nil
environment: Smalltalk
category: #'Tools-Debugger'

StandardToolSet class>>debugProcess:context:label:contents:fullView:
Receiver: StandardToolSet
Arguments and temporary variables:
aProcess: a Process in MorphicProject>>suspendProcessForDebug
aContext: UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
aString: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
contents: nil
aBool: false
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary()
format: 0
instanceVariables: nil
organization: ('as yet unclassified')

subclasses: {CommandLineToolSet . DebuggerTestsToolSet}
name: #StandardToolSet
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Tools-Base'

ToolSet class>>debugProcess:context:label:contents:fullView:
Receiver: ToolSet
Arguments and temporary variables:
aProcess: a Process in MorphicProject>>suspendProcessForDebug
aContext: UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
aString: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
contents: nil
aBool: false
ts: StandardToolSet
Receiver's instance variables:
superclass: AppRegistry
methodDict: a MethodDictionary()
format: 0
instanceVariables: nil
organization: ('as yet unclassified')

subclasses: nil
name: #ToolSet
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'System-Applications'
registeredClasses: an OrderedCollection(StandardToolSet CommandLineToolSet)
default: StandardToolSet

Process>>debug:title:full:contents:
Receiver: a Process in MorphicProject>>suspendProcessForDebug
Arguments and temporary variables:
context: UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
title: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
bool: false
contents: nil
topCtxt: Process>>debug:title:full:contents:
Receiver's instance variables:
nextLink: nil
suspendedContext: MorphicProject>>suspendProcessForDebug
priority: 40
myList: nil
threadId: nil
effectiveProcess: nil
name: nil
island: nil
env: a Dictionary(#errorRecursionFlag->false )

Process>>debug:title:full:
Receiver: a Process in MorphicProject>>suspendProcessForDebug
Arguments and temporary variables:
context: UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
title: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
bool: false
Receiver's instance variables:
nextLink: nil
suspendedContext: MorphicProject>>suspendProcessForDebug
priority: 40
myList: nil
threadId: nil
effectiveProcess: nil
name: nil
island: nil
env: a Dictionary(#errorRecursionFlag->false )

Process>>debug:title:
Receiver: a Process in MorphicProject>>suspendProcessForDebug
Arguments and temporary variables:
context: UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
title: 'MessageNotUnderstood: UndefinedObject>>notEmpty'
Receiver's instance variables:
nextLink: nil
suspendedContext: MorphicProject>>suspendProcessForDebug
priority: 40
myList: nil
threadId: nil
effectiveProcess: nil
name: nil
island: nil
env: a Dictionary(#errorRecursionFlag->false )

StandardToolSet class>>handleError:
Receiver: StandardToolSet
Arguments and temporary variables:
anError: MessageNotUnderstood: UndefinedObject>>notEmpty
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary()
format: 0
instanceVariables: nil
organization: ('as yet unclassified')

subclasses: {CommandLineToolSet . DebuggerTestsToolSet}
name: #StandardToolSet
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'Tools-Base'

ToolSet class>>handleError:
Receiver: ToolSet
Arguments and temporary variables:
anError: MessageNotUnderstood: UndefinedObject>>notEmpty
ctx: nil
ts: StandardToolSet
Receiver's instance variables:
superclass: AppRegistry
methodDict: a MethodDictionary()
format: 0
instanceVariables: nil
organization: ('as yet unclassified')

subclasses: nil
name: #ToolSet
classPool: nil
sharedPools: nil
environment: Smalltalk
category: #'System-Applications'
registeredClasses: an OrderedCollection(StandardToolSet CommandLineToolSet)
default: StandardToolSet

UnhandledError>>defaultAction
Receiver: UnhandledError:
Arguments and temporary variables:
ts: ToolSet
Receiver's instance variables:
messageText: nil
tag: nil
signalContext: UnhandledError(Exception)>>signal
handlerContext: nil
outerContext: nil
exception: MessageNotUnderstood: UndefinedObject>>notEmpty

UndefinedObject>>handleSignal:
Receiver: nil
Arguments and temporary variables:
exception: UnhandledError:
Receiver's instance variables:
nil

UnhandledError(Exception)>>signal
Receiver: UnhandledError:
Arguments and temporary variables:

Receiver's instance variables:
messageText: nil
tag: nil
signalContext: UnhandledError(Exception)>>signal
handlerContext: nil
outerContext: nil
exception: MessageNotUnderstood: UndefinedObject>>notEmpty


--- The full stack ---
MorphicProject>>suspendProcessForDebug
MVCProject(Project)>>enterForEmergencyRecovery
Project class>>tryOtherProjectForRecovery:
MorphicProject(Project)>>primitiveError:
MorphicProject(Project)>>recursiveError:
MorphicProject>>recursiveError:
StandardToolSet class>>handleRecursiveError:
ToolSet class>>handleRecursiveError:
Debugger class>>openOn:context:label:contents:fullView:
StandardToolSet class>>debugProcess:context:label:contents:fullView:
ToolSet class>>debugProcess:context:label:contents:fullView:
Process>>debug:title:full:contents:
Process>>debug:title:full:
Process>>debug:title:
StandardToolSet class>>handleError:
ToolSet class>>handleError:
UnhandledError>>defaultAction
UndefinedObject>>handleSignal:
UnhandledError(Exception)>>signal
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UnhandledError class>>signalForException:
MessageNotUnderstood(Error)>>defaultAction
MessageNotUnderstood>>defaultAction
UndefinedObject>>handleSignal:
MessageNotUnderstood(Exception)>>signal
UndefinedObject(Object)>>doesNotUnderstand: #notEmpty
BadClass>>hasContentsInExplorer
ObjectExplorerWrapper>>hasContents
IndentingListItemMorph>>hasToggle
IndentingListItemMorph>>drawLinesToFirstChildOn:lineColor:
IndentingListItemMorph>>drawLinesOn:lineColor:indentThreshold:
[] in [] in PluggableTreeMorph(SimpleHierarchicalListMorph)>>drawLinesOn:
Array(SequenceableCollection)>>do:
TransformMorph(Morph)>>submorphsDo:
[] in PluggableTreeMorph(SimpleHierarchicalListMorph)>>drawLinesOn:
FormCanvas>>transformBy:clippingTo:during:smoothing:
PluggableTreeMorph(SimpleHierarchicalListMorph)>>drawLinesOn:
PluggableTreeMorph(SimpleHierarchicalListMorph)>>drawOn:
FormCanvas(Canvas)>>draw:
FormCanvas(Canvas)>>drawMorph:
PluggableTreeMorph(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in [] in PluggableSystemWindow(Morph)>>drawSubmorphsOn:
Array(SequenceableCollection)>>reverseDo:
[] in PluggableSystemWindow(Morph)>>drawSubmorphsOn:
PluggableSystemWindow(Morph)>>drawSubmorphsOn:
PluggableSystemWindow(Morph)>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in [] in HandMorph(Morph)>>drawSubmorphsOn:
Array(SequenceableCollection)>>reverseDo:
[] in HandMorph(Morph)>>drawSubmorphsOn:
HandMorph(Morph)>>drawSubmorphsOn:
[] in HandMorph>>updateCacheCanvas:
FormCanvas>>translateBy:during:
HandMorph>>updateCacheCanvas:
HandMorph>>fullDrawOn:
FormCanvas(Canvas)>>fullDraw:
FormCanvas(Canvas)>>fullDrawMorph:
[] in WorldState>>displayWorld:submorphs:
OrderedCollection>>reverseDo:
-- and more not shown --


Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Jakob Reschke
In reply to this post by David T. Lewis
Am So., 23. Feb. 2020 um 18:25 Uhr schrieb David T. Lewis <[hidden email]>:
>
> I should add that you can evaluate "MVCProject new beTopProject" to
> add an MVC project to support emergency recovery.
>

Thank you for the hint.

It kind of worked and went back to the MVC project, but the screen was not redrawn. So at first it looked like Squeak was frozen, until I impatiently clicked around. After the second click, the MVC debugger appeared on top of the Morphic project rendering. Then I could also open the main menu with another click on the background, but it seemed to leave graphical artifacts behind. Even after "restore display" the MVC project behaved kind of odd. Opening the menu and clicking on an item opened another menu, and most of the menus seems to leave graphical artifacts behind. See the attached screenshots.

image.png
image.png


Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Christoph Thiede

Hi Jakob,


thanks for the description, now I can reproduce the issue in a fresh image:


c := Object newSubclass.
c compile: 'hasContentsInExplorer self error'.
{c new} "explore it into hand"


Interestingly, my (modified) main image does not crash in this example but spawns two debuggers instead. I will have to investigate this :D


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Sonntag, 23. Februar 2020 19:38:12
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
 
Am So., 23. Feb. 2020 um 18:25 Uhr schrieb David T. Lewis <[hidden email]>:
>
> I should add that you can evaluate "MVCProject new beTopProject" to
> add an MVC project to support emergency recovery.
>

Thank you for the hint.

It kind of worked and went back to the MVC project, but the screen was not redrawn. So at first it looked like Squeak was frozen, until I impatiently clicked around. After the second click, the MVC debugger appeared on top of the Morphic project rendering. Then I could also open the main menu with another click on the background, but it seemed to leave graphical artifacts behind. Even after "restore display" the MVC project behaved kind of odd. Opening the menu and clicking on an item opened another menu, and most of the menus seems to leave graphical artifacts behind. See the attached screenshots.

image.png
image.png


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: Emergency evaluator due to MNU in hasContentsInExplorer

Christoph Thiede

Ah yes, I got it. Your DNU bug raises a recursive error in MorphicDebugger class >> #openOn:context:label:contents:fullView:, in the ui block, when drawing the hand via #displayWorld.

At the moment, this error recursion is not detected, so in a fresh trunk image, the UI process will hang. No idea why your image did not?

I already proposed a fix for this in Morphic-ct.1610 (inbox). If you load it (don't forget to load System-ct.1130 before), you should get a recursion error instead.

I think under these circumstances, this should be expected behavior?


(Still strange: In my (modified) main image, no recursion error is detected at all. I have no clue which of my many changes is responsible for this ... ^^)

Best,
Christoph

Von: Squeak-dev <[hidden email]> im Auftrag von Thiede, Christoph
Gesendet: Sonntag, 23. Februar 2020 19:46:44
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
 

Hi Jakob,


thanks for the description, now I can reproduce the issue in a fresh image:


c := Object newSubclass.
c compile: 'hasContentsInExplorer self error'.
{c new} "explore it into hand"


Interestingly, my (modified) main image does not crash in this example but spawns two debuggers instead. I will have to investigate this :D


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Jakob Reschke <[hidden email]>
Gesendet: Sonntag, 23. Februar 2020 19:38:12
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] Emergency evaluator due to MNU in hasContentsInExplorer
 
Am So., 23. Feb. 2020 um 18:25 Uhr schrieb David T. Lewis <[hidden email]>:
>
> I should add that you can evaluate "MVCProject new beTopProject" to
> add an MVC project to support emergency recovery.
>

Thank you for the hint.

It kind of worked and went back to the MVC project, but the screen was not redrawn. So at first it looked like Squeak was frozen, until I impatiently clicked around. After the second click, the MVC debugger appeared on top of the Morphic project rendering. Then I could also open the main menu with another click on the background, but it seemed to leave graphical artifacts behind. Even after "restore display" the MVC project behaved kind of odd. Opening the menu and clicking on an item opened another menu, and most of the menus seems to leave graphical artifacts behind. See the attached screenshots.

image.png
image.png


Carpe Squeak!