0.8.16.20:
[sbcl.git] / src / runtime / linux-os.c
index 03d950f..eb1a5a0 100644 (file)
@@ -48,7 +48,7 @@
 size_t os_vm_page_size;
 
 #ifdef LISP_FEATURE_SB_FUTEX
-#include <asm/unistd.h>
+#include <linux/unistd.h>
 #include <errno.h>
 
 /* values taken from the kernel's linux/futex.h.  This header file
@@ -222,7 +222,7 @@ void
 sigsegv_handler(int signal, siginfo_t *info, void* void_context)
 {
     os_context_t *context = arch_os_get_context(&void_context);
-    void* fault_addr = (void*)context->uc_mcontext.cr2;
+    void* fault_addr = (void*)info->si_addr;
     if (!gencgc_handle_wp_violation(fault_addr)) 
        if(!handle_control_stack_guard_triggered(context,fault_addr))
            interrupt_handle_now(signal, info, void_context);
@@ -280,6 +280,8 @@ os_install_interrupt_handlers(void)
                                                 interrupt_thread_handler);
     undoably_install_low_level_interrupt_handler(SIG_STOP_FOR_GC,
                                                 sig_stop_for_gc_handler);
+    undoably_install_low_level_interrupt_handler(SIG_THREAD_EXIT,
+                                                thread_exit_handler);
     if(!linux_supports_futex)
        undoably_install_low_level_interrupt_handler(SIG_DEQUEUE,
                                                     sigcont_handler);