X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fsignal.c;h=f8f4d33f403857ecc03dc9e46ddf8bb7e79dcef0;hb=71f58437848c55c6080febb791b2646b4de46e95;hp=ac9b1b90750687e25181f9ece04a3988e9323c82;hpb=dfead9108ee5c5d0089e9653ca3b9b792a23a15e;p=cacao.git diff --git a/src/vm/signal.c b/src/vm/signal.c index ac9b1b907..f8f4d33f4 100644 --- a/src/vm/signal.c +++ b/src/vm/signal.c @@ -26,9 +26,7 @@ Authors: Christian Thalinger - Changes: - - $Id: signal.c 5806 2006-10-19 10:10:23Z twisti $ + $Id: signal.c 6123 2006-12-05 21:10:54Z twisti $ */ @@ -44,6 +42,7 @@ # include "threads/native/threads.h" #endif +#include "mm/memory.h" #include "vm/signallocal.h" #include "vm/options.h" #include "vm/vm.h" @@ -68,6 +67,13 @@ void signal_init(void) #if !defined(__CYGWIN__) struct sigaction act; + /* Allocate something so the garbage collector's signal handlers + are installed. */ + +#if defined(ENABLE_GC_BOEHM) + (void) GCNEW(u1); +#endif + /* install signal handlers we need to convert to exceptions */ sigemptyset(&act.sa_mask); @@ -78,18 +84,16 @@ void signal_init(void) # endif /* catch NullPointerException/StackOverFlowException */ - if (!checknull) { - act.sa_sigaction = md_signal_handler_sigsegv; - act.sa_flags = SA_NODEFER | SA_SIGINFO; + act.sa_sigaction = md_signal_handler_sigsegv; + act.sa_flags = SA_NODEFER | SA_SIGINFO; #if defined(SIGSEGV) - sigaction(SIGSEGV, &act, NULL); + sigaction(SIGSEGV, &act, NULL); #endif #if defined(SIGBUS) - sigaction(SIGBUS, &act, NULL); + sigaction(SIGBUS, &act, NULL); #endif - } /* catch ArithmeticException */