diff --git a/src/error.c b/src/error.c
index c2474a3185b18a8d1a0bf4c223cec167d1e70b16..c3a5550c2b79d1ba7194b4443827e1ed5be220a8 100644
--- a/src/error.c
+++ b/src/error.c
@@ -11,6 +11,8 @@
 #include "builtin_functions.h"
 #include "array.h"
 #include "object.h"
+#include "main.h"
+#include "builtin_functions.h"
 
 #undef ATTRIBUTE
 #define ATTRIBUTE(X)
@@ -161,7 +163,17 @@ void debug_fatal(char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
 #endif
 
   (void)VFPRINTF(stderr, fmt, args);
-  /* Insert dump routine call here */
+
+  fprintf(stderr,"Attempting to dump backlog (may fail).\n");
+
+  d_flag=t_flag=0;
+  push_text("Fatal error");
+  f_backtrace(0);
+  f_aggregate(2);
+  APPLY_MASTER("describe_backtrace",1);
+  if(sp[-1].type==T_STRING)
+    write_to_stderr(sp[-1].u.string->str, sp[-1].u.string->len);
+
   fflush(stderr);
   abort();
 }