diff options
Diffstat (limited to 'debian/patches/print-error.diff')
-rw-r--r-- | debian/patches/print-error.diff | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/debian/patches/print-error.diff b/debian/patches/print-error.diff index 98b36da3..1c30afe5 100644 --- a/debian/patches/print-error.diff +++ b/debian/patches/print-error.diff @@ -1,3 +1,5 @@ +TODO: should probably go upstream + Index: rumpkernel/buildrump.sh/src/sys/rump/include/rump-sys/kern.h =================================================================== --- rumpkernel.orig/buildrump.sh/src/sys/rump/include/rump-sys/kern.h @@ -11,3 +13,68 @@ Index: rumpkernel/buildrump.sh/src/sys/rump/include/rump-sys/kern.h } while (/*CONSTCOND*/0) #define RUMPMEM_UNLIMITED ((unsigned long)-1) +Index: rumpkernel/buildrump.sh/src/sys/kern/subr_prf.c +=================================================================== +--- rumpkernel.orig/buildrump.sh/src/sys/kern/subr_prf.c ++++ rumpkernel/buildrump.sh/src/sys/kern/subr_prf.c +@@ -339,6 +339,7 @@ vpanic(const char *fmt, va_list ap) + #ifdef DDB + db_panic(); + #endif ++ rumpuser_abort(); + cpu_reboot(bootopt, NULL); + } + +Index: rumpkernel/buildrump.sh/src/lib/librumpuser/rumpuser.c +=================================================================== +--- rumpkernel.orig/buildrump.sh/src/lib/librumpuser/rumpuser.c ++++ rumpkernel/buildrump.sh/src/lib/librumpuser/rumpuser.c +@@ -50,6 +50,7 @@ __RCSID("$NetBSD: rumpuser.c,v 1.67 2015 + #include <string.h> + #include <time.h> + #include <unistd.h> ++#include <execinfo.h> + + #include <rump/rumpuser.h> + +@@ -237,6 +238,27 @@ rumpuser_exit(int rv) + exit(rv); + } + ++__dead void ++rumpuser_abort(void) ++{ ++ const size_t size = 128; ++ const size_t skip = 1; ++ int nptrs; ++ void *buffer[size]; ++ ++ nptrs = backtrace(buffer, size); ++ if (nptrs > skip) { ++ char **syms = backtrace_symbols(&buffer[skip], nptrs - skip); ++ size_t i; ++ ++ for (i = skip; i < nptrs; i++) ++ fprintf(stderr,"%p: %s\n", buffer[i], syms[i - skip]); ++ fflush(stderr); ++ } ++ ++ abort(); ++} ++ + void + rumpuser_seterrno(int error) + { +Index: rumpkernel/buildrump.sh/src/sys/rump/include/rump/rumpuser.h +=================================================================== +--- rumpkernel.orig/buildrump.sh/src/sys/rump/include/rump/rumpuser.h ++++ rumpkernel/buildrump.sh/src/sys/rump/include/rump/rumpuser.h +@@ -151,6 +151,8 @@ int rumpuser_kill(int64_t, int); + #define RUMPUSER_PANIC (-1) + void rumpuser_exit(int) __dead; + ++void rumpuser_abort(void) __dead; ++ + /* + * console output + */ |