X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fosf1-os.c;h=57ee8c1c8981ded325daf5cb80a302f7c063fab6;hb=a3ab89c1db0dd9bfb911532ca134be16f16c4c1b;hp=c3aa9fcb5cc70c474eba1a99f62a8ea11c7d9885;hpb=48f92d19cf12f3aff81a29a786970264a523bc7a;p=sbcl.git diff --git a/src/runtime/osf1-os.c b/src/runtime/osf1-os.c index c3aa9fc..57ee8c1 100644 --- a/src/runtime/osf1-os.c +++ b/src/runtime/osf1-os.c @@ -49,16 +49,11 @@ #include "validate.h" size_t os_vm_page_size; -#if defined GENCGC -#include "gencgc.h" -#endif void os_init(void) { - os_vm_page_size = getpagesize(); - } @@ -144,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); } } @@ -152,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); }