]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
torerr: Log the Tor backtrace version when a raw assertion fails
authorteor <teor@torproject.org>
Fri, 30 Aug 2019 11:17:07 +0000 (21:17 +1000)
committerteor <teor@torproject.org>
Fri, 30 Aug 2019 11:51:07 +0000 (21:51 +1000)
Part of 31571.

src/lib/err/backtrace.c
src/lib/err/backtrace.h
src/lib/err/torerr.c

index c34eb6dfa6c3edbf032465a3a83a1a3a2cc0ba6d..a4d8269c6a7ebe254c601c865e0d3aedfffaa0f9 100644 (file)
@@ -261,6 +261,14 @@ dump_stack_symbols_to_error_fds(void)
 }
 #endif /* defined(NO_BACKTRACE_IMPL) */
 
+/** Return the tor version used for error messages on crashes.
+ * Signal-safe: returns a pointer to a static array. */
+const char *
+get_tor_backtrace_version(void)
+{
+  return bt_version;
+}
+
 /** Set up code to handle generating error messages on crashes. */
 int
 configure_backtrace_handler(const char *tor_version)
index 9b313261e6955312105585426c811f0090ae7542..48b41fca0230e40c2b701962083aa01e68c1a09d 100644 (file)
@@ -21,6 +21,7 @@ void log_backtrace_impl(int severity, int domain, const char *msg,
 int configure_backtrace_handler(const char *tor_version);
 void clean_up_backtrace_handler(void);
 void dump_stack_symbols_to_error_fds(void);
+const char *get_tor_backtrace_version(void);
 
 #define log_backtrace(sev, dom, msg) \
   log_backtrace_impl((sev), (dom), (msg), tor_log)
index 54acf722aa11e7be1e0550b6af50e1661840194c..88b19b7327683f6d968cc58757d8f5f747fc031e 100644 (file)
@@ -144,7 +144,8 @@ tor_raw_assertion_failed_msg_(const char *file, int line, const char *expr,
 {
   char linebuf[16];
   format_dec_number_sigsafe(line, linebuf, sizeof(linebuf));
-  tor_log_err_sigsafe("INTERNAL ERROR: Raw assertion failed at ",
+  tor_log_err_sigsafe("INTERNAL ERROR: Raw assertion failed in ",
+                      get_tor_backtrace_version(), " at ",
                       file, ":", linebuf, ": ", expr, NULL);
   if (msg) {
     tor_log_err_sigsafe_write(msg);