[Seaside] Debugging -> Hanging
cputney at wiresong.ca
Thu Feb 22 14:05:07 UTC 2007
On Feb 20, 2007, at 6:35 PM, Blake wrote:
> Hey, Seasiders:
> I'm doing some stuff in Seaside and I think I have my set up wrong.
> If I put in a halt or click debug, I get a debug window inside the
> Squeak environment (not the web browser) and often--I'm still
> trying to track down the exact circumstances, but it seems to be
> related to trying to trace--Squeak's windows become unresponsive.
> I can right-click to close it (and it will ask me if I really want
> to quit without saving, which I don't but...) and I managed to get
> another debug window opened once by paging through my stuff, but I
> can't activate any of the internal windows.
I've run into this problem too. I haven't investigated too
thoroughly, but I think the stack manipulation done by Seaside
interacts with that done by the debugger to produce an undesirable
result. What happens is this : The first error opens the debugger as
usual. Then, as you're stepping through the code, it hits another
error. The exception gets caught by Seaside's error handlers, which
writes a stack trace, then invokes a continuation to return the stack
trace to the browser.
Here's where the probem comes in: invoking a continuation involves
destroying the current stack. Now in theory this should work just
fine, as the debugger is running in a different process than the
process being debugged. But somehow it's the stack belonging to the
UI process that gets destroyed, leaving the UI unresponsive.
Fortunately, there's an easy way to break out of this situation: just
press Cmd-., or whatever your interrupt key is. That will kick start
the UI process. In the end it's a bit annoying, but not a disaster.
More information about the Seaside