<div dir="ltr">Bob,<div><br></div><div> thank you!! morphicOpenOn:context:label:contents:fullView: is indeed the method in question. So if one moves the ErrorRecursion := false outside of the addDeferredUIMessage: block everything works. i.e. now the code reads:</div><div><br></div><div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>Project current addDeferredUIMessage:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>[ debugger := self new</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>process: process</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>controller: nil</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>context: context.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>full</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>ifTrue: [ debugger openFullNoSuspendLabel: title ]</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>ifFalse:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>[ debugger</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>openNotifierContents: contentsStringOrNil</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>label: title ].</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>debugger errorWasInUIProcess: errorWasInUIProcess.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>"Try drawing the debugger tool at least once to avoid freeze."</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>Project current world displayWorldSafely].</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>ErrorRecursion := false ].</div><div><br></div><div>and the old code doesn't work:</div><div><br></div><div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>Project current addDeferredUIMessage:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>[ debugger := self new</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>process: process</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>controller: nil</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>context: context.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>full</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>ifTrue: [ debugger openFullNoSuspendLabel: title ]</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>ifFalse:</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>[ debugger</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>openNotifierContents: contentsStringOrNil</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>label: title ].</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>debugger errorWasInUIProcess: errorWasInUIProcess.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>"Try drawing the debugger tool at least once to avoid freeze."</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>Project current world displayWorldSafely.</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>ErrorRecursion := false ]].</div></div><div><br></div><div>So there question is, what are the tests for the ErrorGuard and ErrorRecursion? I need to run these before committing the fix above.</div><div><br></div><div>Bob, way to go! Thank you.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 24, 2018 at 3:52 PM, Bob Arning <span dir="ltr"><<a href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p><font face="Georgia">I tried this in 5.1 and it worked</font></p>
<p><font face="Georgia">Debugger class>><br>
</font></p>
<p><font face="Georgia">morphicOpenOn: process context: context
label: title contents: contentsStringOrNil fullView: full<br>
"Open a notifier in response to an error, halt, or notify. A
notifier view just shows a short view of the sender stack and
provides a menu that lets the user open a full debugger."<br>
<br>
| errorWasInUIProcess debugger |<br>
ErrorRecursion ifTrue: [<br>
"self assert: process == Project current uiProcess --
DOCUMENTATION ONLY"<br>
ErrorRecursion := false.<br>
"^ Project current handleFatalDrawingError: title"].
<============commented this out<br>
...<br>
</font><br>
</p><div><div class="gmail-h5">
<br>
<div class="gmail-m_-5988897607938864499moz-cite-prefix">On 1/24/18 6:31 PM, Eliot Miranda
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi All,
<div><br>
</div>
<div> I'm comparing two close copies of a class in attempting
a complex refactoring, comparing the original code with the
close copy. In doing this I need to open up two debuggers to
step through the two computations simultaneously. If I try it
this way, where the two JITs break at a particular bytecode:</div>
<div><br>
</div>
<div>
<div>[:m :opts|</div>
<div> [StackToRegisterMappingCogit cog: m options: opts] fork.</div>
<div> Processor yield.</div>
<div> <wbr>AltStackToRegisterMappingCogit cog: m options: opts]</div>
<div><span class="gmail-m_-5988897607938864499gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>value:
TabbedPalette class>>#unload</div>
<div><span class="gmail-m_-5988897607938864499gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>value:
#(ObjectMemory Spur64BitCoMemoryManager</div>
<div><span class="gmail-m_-5988897607938864499gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>debugBytecodePointers
#(59)</div>
<div><span class="gmail-m_-5988897607938864499gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>compilationTrace
0).</div>
</div>
<div><br>
</div>
<div>I get an emergency evaluator :-(, and if I type restart I
only ever get one debugger. What's the right way to do this?</div>
<div><br>
</div>
<div>To boil down the example I need this to work:</div>
<div><br>
</div>
<div> [1 halt] fork.</div>
<div> Processor yield.</div>
<div> 2 halt</div>
<div><br>
</div>
<div>i.e. I want to be able to get two debuggers, one open on 1
halt, and the other on 2 halt.<br>
<div class="gmail-m_-5988897607938864499gmail_signature">
<div dir="ltr">
<div><span style="font-size:small;border-collapse:separate">
<div>_,,,^..^,,,_<br>
</div>
<div>best, Eliot</div>
</span></div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="gmail-m_-5988897607938864499mimeAttachmentHeader"></fieldset>
<br>
<pre></pre>
</blockquote>
<br>
</div></div></div>
<br><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div></div>