TestBrowser freezes - how to debug

Ned Konz ned at bike-nomad.com
Sun Mar 30 22:39:50 UTC 2003


On Sunday 30 March 2003 02:07 pm, Martin Drautzburg wrote:
> I just noticed that the TestBrowser does not come up anymore. This
> must have something to do with stuff I filed in recently or with
> things I messed up personally. Sometimes I am able to interrupt
> with Alt. and sometimes even that does not work. In the latter case
> I get the emergency debugger with the following backtrace.
>
> http://minnow.cc.gatech.edu/squeak/3144
>
> My question is: how would an experienced smalltalker deal with such
> a situation. I even have an older image around, but it shows the
> same problem.

I looked at NewParagraph>>displayOn:at: and saw that the only #- 
operation was the 

	offset := somePosition - positionWhenComposed.

So positionWhenComposed was nil (which your stack trace also shows).

Then I looked for setters of positionWhenComposed.
There are only two; these are
NewParagraph>>moveBy: (which would blow up if positionWhenComposed 
were nil), and NewParagraph>>positionWhenComposed:.

I then looked for senders of positionWhenComposed:, and found that 
it's called only in TextMorph>>fit and TextMorph>>composeToBounds

Looking further of callers of composeToBounds, we see that it's called 
on extent: and other common calls.

So how is a TextMorph being displayed when it hasn't had its extent 
set yet?

Anyway, we don't know yet.

So look at the stack: what's happening is that every time we try to 
raise a pre-debug window, we passivate the previously active window, 
which causes the world to be re-drawn. But there's no error handling!

So I'd probably try replacing the call to displayWorld in 
SystemWindow>>passivate with displayWorldSafely, which *does* have 
proper error handling.

Then you might have a chance of not being caught in this mess.

Just an idea...
-- 
Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE



More information about the Squeak-dev mailing list