Trying to run on Haiku exposes a flaw. How incredible.
So I tried to run the last build I made of JRE 1.4.2 for BeOS R5 on a nightly build of Haiku tonight.
It failed to resolve the symbol set_signal_stack(). Apparently, we’re missing that one in the kernel. What a shame. I’ll have to poke Axel, file a bug, and see if we can get it in the kernel.
This led me down an interesting path: What exactly is set_signal_stack() for? It’s an alternate stack to use when handling segmentation fault (segv) signals. Ingenious. Basically, it lets you keep processing to some extent without totally bailing out. Java requires this for it’s ability to recover from OutOfMemoryExceptions, as explained in this post to a mailing list.
Huh.
We copied a lot of code from the os_solaris_i486.cpp to stub out the os_beos_i486.cpp file. Ironically, we included the UseStackBanging global that we don’t need. Since we’re only running on x86, we -always- need to install an alternate signal stack, for every OSThread we encounter — like the Linux implementation does. No complex T1 and T2 solaris threading model dookey.
So.
I’ve got a new mission. Cleaning up that os / platform implementation and seeing if it helps out our signal handling and OutOfMemoryException total failure any. This could take a while, it’s very low priority.

August 19th, 2007 at 6:11 pm
Didn’t notice this blog post until today, but thanks to Jérôme’s bug report, I’ve implemented set_signal_stack() (and also its POSIX counterpart sigaltstack()) on last Friday – hope that helps :-)
August 19th, 2007 at 9:17 pm
Apparently, this is how you answer those stupid questions. :-) Nice seeing you Bryan, and nice meeting your wife too.