gencgc: reclaim space more aggressively
[sbcl.git] / src / runtime / interr.c
index c13be45..2187fd8 100644 (file)
@@ -79,7 +79,7 @@ lose(char *fmt, ...)
     va_list ap;
     /* Block signals to prevent other threads, timers and such from
      * interfering. If only all threads could be stopped somehow. */
-    block_blockable_signals();
+    block_blockable_signals(0, 0);
     fprintf(stderr, "fatal error encountered");
     va_start(ap, fmt);
     print_message(fmt, ap);
@@ -95,8 +95,10 @@ void
 corruption_warning_and_maybe_lose(char *fmt, ...)
 {
     va_list ap;
+#ifndef LISP_FEATURE_WIN32
     sigset_t oldset;
-    thread_sigmask(SIG_BLOCK, &blockable_sigset, &oldset);
+    block_blockable_signals(0, &oldset);
+#endif
     fprintf(stderr, "CORRUPTION WARNING");
     va_start(ap, fmt);
     print_message(fmt, ap);
@@ -109,10 +111,13 @@ corruption_warning_and_maybe_lose(char *fmt, ...)
     fflush(stderr);
     if (lose_on_corruption_p)
         call_lossage_handler();
+#ifndef LISP_FEATURE_WIN32
     else
         thread_sigmask(SIG_SETMASK,&oldset,0);
+#endif
 }
 \f
+char *internal_error_descriptions[] = {INTERNAL_ERROR_NAMES};
 /* internal error handler for when the Lisp error system doesn't exist
  *
  * FIXME: Shouldn't error output go to stderr instead of stdout? (Alas,
@@ -125,7 +130,9 @@ describe_internal_error(os_context_t *context)
     int len, scoffset, sc, offset, ch;
 
     len = *ptr++;
-    printf("internal error #%d\n", *ptr++);
+    printf("internal error #%d (%s)\n", *ptr,
+           internal_error_descriptions[*ptr]);
+    ptr++;
     len--;
     while (len > 0) {
         scoffset = *ptr++;