X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Finterr.c;h=b24b7263ac972a6912e3c1a50943fdb942e5d243;hb=fe124f3fad91ea52851f20f9cd73823d71f39ad1;hp=64eacea46ad58edf51c67feb12d240aa1795d685;hpb=92c8db80e039f60623e53a0b9355cf0a9ec49f3d;p=sbcl.git diff --git a/src/runtime/interr.c b/src/runtime/interr.c index 64eacea..b24b726 100644 --- a/src/runtime/interr.c +++ b/src/runtime/interr.c @@ -28,6 +28,7 @@ #include "genesis/static-symbols.h" #include "genesis/vector.h" #include "thread.h" +#include "monitor.h" /* the way that we shut down the system on a fatal error */ @@ -37,19 +38,23 @@ default_lossage_handler(void) exit(1); } static void (*lossage_handler)(void) = default_lossage_handler; -void -set_lossage_handler(void handler(void)) + +void enable_lossage_handler(void) { - lossage_handler = handler; + lossage_handler = monitor_or_something; +} +void disable_lossage_handler(void) +{ + lossage_handler = default_lossage_handler; } -never_returns +void lose(char *fmt, ...) { va_list ap; fprintf(stderr, "fatal error encountered in SBCL pid %d",getpid()); #if defined(LISP_FEATURE_SB_THREAD) - fprintf(stderr, "(tid %lu)",thread_self()); + fprintf(stderr, "(tid %lu)", (unsigned long) thread_self()); #endif if (fmt) { fprintf(stderr, ":\n");