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

David T. Lewis lewis at mail.msen.com
Tue Aug 1 18:47:43 UTC 2017


Cool, thanks Chris.

Jakob, I'm assuming you are working with a trunk image. Can you confirm if
the issue is resolved after updating your image to the latest?

Dave

> 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