Help! Squeak crashes during updates

Raab, Andreas Andreas.Raab at disney.com
Mon Dec 20 00:29:25 UTC 1999


Jan,

Thanks for your suggestions! This is really helpful.

> 1) An exception 10H is a math coprocessor fault. I believe 
> you could get a fault on storing a value if the math 
> coprocessor control flags were set to cause an exception 
> on a variety of errors, instead of the mode to just fix
> things up and continue.

Do you know how this is done?!

> Setting the coprocessor flags get's especially sticky if 
> you call a DLL, and the DLL may have some different 
> assumption about the coprocessor mode flags than the 
> program (or a different DLL).

This shouldn't happen since the DLL called is a '100% Squeak DLL' ;-) and
it's compiled under *exactly* the same settings as the VM.

> 2) Some piece of MMX vector code is forgetting to reset the 
> FP register state after doing MMX instructions. As the MMX 
> registers are mapped on top of the FP registers, the FP 
> instructions will fault, because the processor still thinks 
> your in MMX mode and the FP registers are not empty (can look
> like a FP stack overflow).

I've read about this but do you know how to find out if MMX mode is
currently active?!

> You can probably make the MSVC debugger trap the exception, 
> you just have to add an exception code 10H to the list of 
> known exceptions and tell it to always trap it. Actually, 
> exceptions can have just about ANY number as software can 
> call RaiseException with any value. 

Interesting - I've just checked RaiseException and you're right. I always
assumed that SEH is used for hardware exceptions only...

> The Microsoft Knowledgebase also says you can turn off the 
> math coprocessor from the control panel (to avoid buggy coprocessors), 
> and rely on software FP emulation.

Uh. Ah. Surely we don't want this ;-)

> This may be a useful test to see if any change in behavior
> happens.

Yep. Might be worth a try. Any volunteers?!

  Andreas





More information about the Squeak-dev mailing list