summaryrefslogtreecommitdiff
path: root/debian/patches/print-error.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/print-error.diff')
-rw-r--r--debian/patches/print-error.diff67
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
+ */