[squeak-dev] Recovery project hanging after recursive error in debugger

Chris Muller asqueaker at gmail.com
Tue Aug 1 17:12:03 UTC 2017


ErrorRecursionGuard is a _patch_ to a relatively new addition, the
introduction of Debugger>>'ErrorRecursion' which resulted in the
Emergency Evaluator being opened too eagerly (and unable to be
closed!) -- even when there was no recursion.

Eliot fixed the symptom described by Jakob with Morphic-eem.1334.

On Tue, Aug 1, 2017 at 7:18 AM, David T. Lewis <lewis at mail.msen.com> wrote:
> Is anyone else experiencing this problem? I have not seen it, but I have
> not recently been doing things that could lead to an emergency evaluator,
> so it is not surprising that I would not have seen it. Anyone else?
>
> The ErrorRecursionGuard mutex is a relatively new addition (Tools-cmm.755
> added in April), so it certainly seems possible the we may have a problem
> related to the mutex.
>
> Dave
>
> On Sun, Jul 30, 2017 at 08:42:43PM +0200, Jakob Reschke wrote:
>> Hi,
>>
>> Recently, it occurs quite frequently in my image that something goes
>> so wrong that the Debugger fails to open and I am bumped out to the
>> parent Project. However, the debugger for the crippled Process does
>> not open there either, because the ErrorRecursionGuard Mutex is still
>> held by the suspended Process that wants to be debugged.
>>
>> Interrupting with Cmd+. and terminating the suspended process usually
>> works to get going again, but this seems not like something I should
>> have to do manually. Is something broken with the recovery mechanism?
>>
>> More details from the stack (extracted with the Process Browser):
>> - some UnhandledError is raised
>> - ToolSet class>>debugError: is called
>> - Debugger class>>morphicOpenOn:context:label:contents:fullView: is
>> reached, the ErrorRecursionGuard Mutex is acquired
>> - ErrorRecursion is true there for some reason unknown to me, no
>> further debuggers are on that particular stack
>> - Project current handleFatalDrawingError:
>> - Project class>>tryOtherProjectForRecovery:
>> - SomeProjectType(Project)>>enterForEmergencyRecovery
>> - MorphicProject>>suspendProcessForDebug
>>
>> Now it is waiting to be picked up by the 'FATAL PROJECT ERROR!'
>> debugger, but it cannot because that Mutex is still held, so the
>> debugger waits for the suspended process that it should debug.
>>
>> - reproduce the hanging by ProcessBrowser>>debugProcess on the suspended Process
>> - Process>>debugWithTitle: ...
>> - Debugger class>>morphicOpenOn:context:label:contents:fullView: is
>> reached, wants to enter the critical section with ErrorRecursionGuard,
>> but has to wait ...
>>
>> Kind regards,
>> Jakob
>>
>


More information about the Squeak-dev mailing list