1.0.46.31: clean up mach port deallocation on x86
[sbcl.git] / src / runtime / thread.c
index 8e3f7fd..ee11e0f 100644 (file)
@@ -131,6 +131,10 @@ initial_thread_trampoline(struct thread *th)
 #ifdef LISP_FEATURE_SB_THREAD
     pthread_setspecific(lisp_thread, (void *)1);
 #endif
+#if defined(LISP_FEATURE_SB_THREAD) && defined(LISP_FEATURE_PPC)
+    /* SIG_STOP_FOR_GC defaults to blocked on PPC? */
+    unblock_gc_signals(0,0);
+#endif
     function = th->no_tls_value_marker;
     th->no_tls_value_marker = NO_TLS_VALUE_MARKER_WIDETAG;
     if(arch_os_thread_init(th)==0) return 1;
@@ -314,12 +318,12 @@ new_thread_trampoline(struct thread *th)
 
 #ifdef LISP_FEATURE_MACH_EXCEPTION_HANDLER
     FSHOW((stderr, "Deallocating mach port %x\n", THREAD_STRUCT_TO_EXCEPTION_PORT(th)));
-    mach_port_move_member(mach_task_self(),
+    mach_port_move_member(current_mach_task,
                           THREAD_STRUCT_TO_EXCEPTION_PORT(th),
                           MACH_PORT_NULL);
-    mach_port_deallocate(mach_task_self(),
+    mach_port_deallocate(current_mach_task,
                          THREAD_STRUCT_TO_EXCEPTION_PORT(th));
-    mach_port_destroy(mach_task_self(),
+    mach_port_destroy(current_mach_task,
                       THREAD_STRUCT_TO_EXCEPTION_PORT(th));
 #endif