X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fosf1-os.c;h=57ee8c1c8981ded325daf5cb80a302f7c063fab6;hb=a3ab89c1db0dd9bfb911532ca134be16f16c4c1b;hp=ba62135f29c933d4367e1291fbe549d69e7a2da3;hpb=503a50f07740b52908f630b0492cf56556f1a792;p=sbcl.git diff --git a/src/runtime/osf1-os.c b/src/runtime/osf1-os.c index ba62135..57ee8c1 100644 --- a/src/runtime/osf1-os.c +++ b/src/runtime/osf1-os.c @@ -49,9 +49,6 @@ #include "validate.h" size_t os_vm_page_size; -#if defined GENCGC -#include "gencgc.h" -#endif void os_init(void) @@ -142,7 +139,8 @@ sigsegv_handler(int signal, siginfo_t *info, void* void_context) fprintf(stderr, "bad address 0x%p\n",addr); lose("ran off end of dynamic space"); } else if (!interrupt_maybe_gc(signal, info, context)) { - interrupt_handle_now(signal, info, context); + if(!handle_control_stack_guard_triggered(context,addr)) + interrupt_handle_now(signal, info, context); } } @@ -150,6 +148,7 @@ sigsegv_handler(int signal, siginfo_t *info, void* void_context) void os_install_interrupt_handlers(void) { - undoably_install_low_level_interrupt_handler(SIGSEGV, sigsegv_handler); + undoably_install_low_level_interrupt_handler(SIG_MEMORY_FAULT, + sigsegv_handler); }