win32-os.c: Split up handle_exception
[sbcl.git] / src / runtime / interr.c
index f7da2d3..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);
@@ -97,7 +97,7 @@ 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);
@@ -117,6 +117,7 @@ corruption_warning_and_maybe_lose(char *fmt, ...)
 #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,
@@ -129,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++;