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
|