X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fbacktrace.c;h=b6dfc440e280149f68d87981600169cf30fc8971;hb=9abfd1a2b22862570c15ffa5129b1196d0480290;hp=958e10f95cfe0369ae7758d665c815b12eb0b0bc;hpb=4c64e9aed42b9041e6eb1f81ff335aa7ff7da506;p=sbcl.git diff --git a/src/runtime/backtrace.c b/src/runtime/backtrace.c index 958e10f..b6dfc44 100644 --- a/src/runtime/backtrace.c +++ b/src/runtime/backtrace.c @@ -533,22 +533,28 @@ describe_thread_state(void) { sigset_t mask; struct thread *thread = arch_os_get_current_thread(); - thread_sigmask(SIG_SETMASK, NULL, &mask); + struct interrupt_data *data = thread->interrupt_data; +#ifndef LISP_FEATURE_WIN32 + get_current_sigmask(&mask); printf("Signal mask:\n"); printf(" SIGALRM = %d\n", sigismember(&mask, SIGALRM)); printf(" SIGINT = %d\n", sigismember(&mask, SIGINT)); printf(" SIGPROF = %d\n", sigismember(&mask, SIGPROF)); - printf(" SIG_INTERRUPT_THREAD = %d\n", sigismember(&mask, SIG_INTERRUPT_THREAD)); #ifdef SIG_STOP_FOR_GC printf(" SIG_STOP_FOR_GC = %d\n", sigismember(&mask, SIG_STOP_FOR_GC)); #endif +#endif printf("Specials:\n"); printf(" *GC-INHIBIT* = %s\n", (SymbolValue(GC_INHIBIT, thread) == T) ? "T" : "NIL"); - printf(" *GC-PENDING* = %s\n", (SymbolValue(GC_PENDING, thread) == T) ? "T" : "NIL"); + printf(" *GC-PENDING* = %s\n", + (SymbolValue(GC_PENDING, thread) == T) ? + "T" : ((SymbolValue(GC_PENDING, thread) == NIL) ? + "NIL" : ":IN-PROGRESS")); printf(" *INTERRUPTS-ENABLED* = %s\n", (SymbolValue(INTERRUPTS_ENABLED, thread) == T) ? "T" : "NIL"); #ifdef STOP_FOR_GC_PENDING printf(" *STOP-FOR-GC-PENDING* = %s\n", (SymbolValue(STOP_FOR_GC_PENDING, thread) == T) ? "T" : "NIL"); #endif + printf("Pending handler = %p\n", data->pending_handler); } /* This function has been split from backtrace() to enable Lisp