[BUG][FIX] netscape browser plugin change
John M McIntosh
johnmci at smalltalkconsulting.com
Sat Aug 10 07:32:56 UTC 2002
>John M McIntosh <johnmci at smalltalkconsulting.com> is claimed by the
>authorities to have written:
>
>> However in testing 3.2.8b3 on the macintosh under os-x we found some
>> cases where we could hang IE. This turned out to be an issue with
>> squeak when it is idle. If there is only the idle loop process
>> running, then it seems there isn't a new method being activated, nor
>> a long unconditional jump taking place. Thus the termination flag
>> never is checked.
>This is very disturbing John. The idle loop bytecodes clearly include an
>A3 F8 longjump of -8 bytes, back to the beginning of the idleLoop. A
>backwards longJump most definitely should call
>internalQuickCheckForInterrupts. And if the counter on
>interruptCheckCount is working, that should lead to checkInterrupts.
Alright, I'm assuming that a LONG JUMP wouldn't be needed for -8
bytes, that's my 68K assembler biasing my opinions of what the
bytecode code is doing, should it be a shortUnconditionalJump? also I
didn't quite see a little if statement in the code
See the old code had
case 167:
/* longUnconditionalJump */
//stuff
if (offset3 < 0) {
/* begin internalQuickCheckForInterrupts */
if ((foo->interruptCheckCounter -= 1) <= 0) {
//stuff
checkForInterrupts();
if (plugInTimeToReturn()) {
ReturnFromInterpret();
}
&
case 131:
/* singleExtendedSendBytecode */
/* begin normalSend */
/* begin internalActivateNewMethod */
//stuff you'll need to look.
// but the prim call happens before this code so it never
// executes this, and some lots of logic exists here to
// prevent these below statements from ever executing.
checkForInterrupts();
if (plugInTimeToReturn()) {
ReturnFromInterpret();
}
So I'm wondering perhaps the check for foo->interruptCheckCounter < 0
in case 167 never becomes true under this condition here. Well I
already know that because os-x has a nice gui tool to show the
current stack back trace and once I got the plugin into the failure
condition I could just watch it spin on the idleLoop Process.
>
>
>Remember what Yoda tells us
>"backward jumps lead to interrupt checks.
>interrupt checks lead to interrupt handling...
>and interrupt handling leads to - event routines!"
>
>tim
>
>--
>Tim Rowledge, tim at sumeru.stanford.edu, http://sumeru.stanford.edu/tim
>Strange OpCodes: CLOUT: Call Long-distance On Unused Telephone
--
--
===========================================================================
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
===========================================================================
More information about the Squeak-dev
mailing list
|