summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/node.cc1
-rw-r--r--src/util.h11
2 files changed, 9 insertions, 3 deletions
diff --git a/src/node.cc b/src/node.cc
index 6d4c9fa160..eaf642b76a 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -2398,7 +2398,6 @@ static void OnFatalError(const char* location, const char* message) {
} else {
PrintErrorString("FATAL ERROR: %s\n", message);
}
- DumpBacktrace(stderr);
fflush(stderr);
ABORT();
}
diff --git a/src/util.h b/src/util.h
index 94278e2b9f..f3f123c6d1 100644
--- a/src/util.h
+++ b/src/util.h
@@ -38,11 +38,18 @@ template <typename T> using remove_reference = std::remove_reference<T>;
// Windows 8+ does not like abort() in Release mode
#ifdef _WIN32
-#define ABORT() raise(SIGABRT)
+#define ABORT_NO_BACKTRACE() raise(SIGABRT)
#else
-#define ABORT() abort()
+#define ABORT_NO_BACKTRACE() abort()
#endif
+#define ABORT() \
+ do { \
+ node::DumpBacktrace(stderr); \
+ fflush(stderr); \
+ ABORT_NO_BACKTRACE(); \
+ } while (0)
+
#if defined(NDEBUG)
# define ASSERT(expression)
# define CHECK(expression) \