assertion failures
Archie Cobbs
kaffe@rufus.w3.org
Tue, 28 Jul 1998 10:23:21 -0700 (PDT)
Patrick A Tullmann writes:
> You're probably running off the end of the stack because of recursive
> calls---it looks like function 0x3e3128 is the culprit. Cool thing is
> that the object at the end of the stack is the thread context, so
> that'll get trashed, followed by whatever else has been allocated
> after that... all bets are off at this point.
>
> ...
>
> This is an known problem with Kaffe. In the interpreter you can stick
> sanity checks like the following in machine.c. In the JIT'r, on the
> other hand....
Hmm.. it would be nice if an infinite loop was caught with an out
of memory exception, instead of a core dump.
How hard would this be to fix?
Possible solutions:
- Compile in code at the beginning of each method to check the
stack pointer (this could be done optionally, controlled by
a command line argument). It should have a negligible effect
on speed.
- Put each thread stack in its own memory mapped region with
unmapped pages on either side
Seems like #1 ought to be fairly easy, since kaffe is already
compiling a bunch of machine code for each method anyway...
-Archie
___________________________________________________________________________
Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com