diff --git a/lib/libsys/panic.c b/lib/libsys/panic.c index 79c47bce2..630a17643 100644 --- a/lib/libsys/panic.c +++ b/lib/libsys/panic.c @@ -6,6 +6,15 @@ #include "syslib.h" +void panic_hook(void); + +__weak_alias(panic_hook, __panic_hook); + +void __panic_hook(void) +{ + ; +} + /*===========================================================================* * panic * *===========================================================================*/ @@ -38,6 +47,8 @@ void panic(const char *fmt, ...) printf("syslib:panic.c: stacktrace: "); util_stacktrace(); + panic_hook(); + /* Try exit */ _exit(1); diff --git a/servers/vfs/misc.c b/servers/vfs/misc.c index 754bdb0ef..44d9d53b7 100644 --- a/servers/vfs/misc.c +++ b/servers/vfs/misc.c @@ -761,3 +761,10 @@ ds_event(void *arg) thread_cleanup(NULL); return(NULL); } + +/* A function to be called on panic(). */ +void panic_hook(void) +{ + printf("VFS mthread stacktraces:\n"); + mthread_stacktraces(); +}