Explorar o código

backtrace: avoid undefined behaviour on re-initialisation

cb_buf_mutex is statically initialised, so we can not destroy it when
we are shutting down the err subsystem. If we destroy it, and then
re-initialise tor, all our backtraces will fail.

Part of 31736, but committed in this branch to avoid merge conflicts.
teor %!s(int64=6) %!d(string=hai) anos
pai
achega
315f14c709
Modificáronse 1 ficheiros con 4 adicións e 0 borrados
  1. 4 0
      src/lib/err/backtrace.c

+ 4 - 0
src/lib/err/backtrace.c

@@ -251,6 +251,10 @@ remove_bt_handler(void)
      * It's not a fatal error, so we just ignore it. */
      * It's not a fatal error, so we just ignore it. */
     (void)sigaction(trap_signals[i], &sa, NULL);
     (void)sigaction(trap_signals[i], &sa, NULL);
   }
   }
+
+  /* cb_buf_mutex is statically initialised, so we can not destroy it.
+   * If we destroy it, and then re-initialise tor, all our backtraces will
+   * fail. */
 }
 }
 #endif /* defined(USE_BACKTRACE) */
 #endif /* defined(USE_BACKTRACE) */