[tor-commits] [tor/master] Merge branch 'tor-github/pr/1303'

asn at torproject.org asn at torproject.org
Thu Sep 12 15:10:46 UTC 2019


commit 028733e8b6f36bae420b1e41897401fa3b14ccf8
Merge: 3aaa4d416 ebce7059f
Author: George Kadianakis <desnacked at riseup.net>
Date:   Thu Sep 12 18:09:35 2019 +0300

    Merge branch 'tor-github/pr/1303'

 changes/bug31594            |  5 +++
 src/lib/err/backtrace.c     |  2 +-
 src/lib/err/torerr.c        | 64 +++++++++++++++++++++++++++++++---
 src/lib/err/torerr.h        |  7 ++--
 src/lib/err/torerr_sys.c    |  5 ++-
 src/lib/log/log.c           | 85 +++++++++++++++++++++++++++++++++++++++------
 src/lib/log/log.h           |  1 +
 src/lib/log/util_bug.c      | 11 +++---
 src/trunnel/trunnel-local.h |  1 +
 9 files changed, 158 insertions(+), 23 deletions(-)

diff --cc src/lib/err/torerr.c
index 48fcf35e0,21b28a5f6..0a4ee5d41
--- a/src/lib/err/torerr.c
+++ b/src/lib/err/torerr.c
@@@ -163,14 -206,20 +207,26 @@@ tor_raw_assertion_failed_msg_(const cha
    }
  
    dump_stack_symbols_to_error_fds();
 +
 +  /* Some platforms (macOS, maybe others?) can swallow the last write before an
 +   * abort. This issue is probably caused by a race condition between write
 +   * buffer cache flushing, and process termination. So we write an extra
 +   * newline, to make sure that the message always gets through. */
 +  tor_log_err_sigsafe_write("\n");
  }
  
+ /**
+  * Call the abort() function to kill the current process with a fatal
+  * error. But first, close the raw error file descriptors, so error messages
+  * are written before process termination.
+  **/
+ void
+ tor_raw_abort_(void)
+ {
+   tor_log_close_sigsafe_err_fds();
+   abort();
+ }
+ 
  /* As format_{hex,dex}_number_sigsafe, but takes a <b>radix</b> argument
   * in range 2..16 inclusive. */
  static int



More information about the tor-commits mailing list