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

Jakob Reschke jakob.reschke at student.hpi.de
Sun Jul 30 18:42:43 UTC 2017


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,

More information about the Squeak-dev mailing list