[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]

Re: bombs and the Mac



> From heh Sat Oct 14 15:25:28 1989
> 
> [setjmp/longjmp register variable corruption in Mac C++]
> [declaring variables "volitile" didn't work because volitile
>  wasn't implemented]

Try putting the suspect variables in a struct.  This forces them
out of registers.

Before you try that, though, is the SHIELD_UP in the routine with
the variable problem?  If not, I'd like you to try putting this
in the module where the variable problem occurs:

	if (1==0) {
		(void) setjmp(...);
	}

If that makes the problem go away, it gives us more information
about how the compiler works, and says:
 - The problem may manefest several routines above the one
   that has the shield
 - The problem is fixable in the setjmp/longjmp routines.
 - The fix must be distributed to our developers, too.

	michael