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(); }