Date: Wed, 26 Nov 1997 07:03:19 -0800 From: Fred Gilham <gilham@csl.sri.com> To: emulation@FreeBSD.ORG Subject: Problems with Linux Allegro Common Lisp (was Re: Problems with spicecad for Linux) Message-ID: <199711261503.HAA00854@japonica.csl.sri.com> In-Reply-To: Your message of "Wed, 26 Nov 1997 15:11:12 %2B1030." <199711260441.PAA02499@word.smith.net.au>
next in thread | previous in thread | raw e-mail | index | archive | help
Mike Smith writes: > . > . > . >And then SIGBUS. It's possible that it was expecting a SEGV here as >well, but got SIGBUS due to a difference of opinion between FreeBSD >and Linux. Without knowing why it got the signal, it's fairly >impossible to tell though. You should look at the trap() function in >i386/i386/ trap.c and look at where it returns SIGBUS to the process, >and then compare this with Linux's reasons. The same problem exists with Linux Allegro Common Lisp. I spent some time trying to figure out why and it seems possible that it's T_STKFLT. Linux has a SIGSTKFLT; FreeBSD just maps this directly to SIGBUS. I was told that it's possible to hack the emulator so that when ACL sets up its signal handlers, it will set the bus error signal handler instead of the SIGSTKFLT signal handler. Actually the person suggested installing the SIGSEGV handler for SIGBUS and preventing ACL from installing its SIGBUS handler. I haven't been able to get this to work in any permutation, though, probably due to my lame hackery. (I was able to get the behavior of the system to change, i.e. the signal was being caught, but the system still didn't function correctly.) Is there a more robust solution? or rather, a solution at all? The current situation seems to exclude a significant class of Linux applications from being run successfully by FreeBSD. -Fred Gilham gilham@csl.sri.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199711261503.HAA00854>