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
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
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@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
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@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
squeak-dev@lists.squeakfoundation.org