tor crashes silently with non-threaded openssl build
I've seen lots of cryptic crashes of tor on my openwrt gateway: https://atlas.torproject.org/#details/F44DA505AD91CFC8D5745BB070909F20F21E06D9 I've recently decided to debug this issue and run tor with --Daemon 0 under tmux and I got assertion failure: ``` ... Aug 24 00:43:13.842 [notice] Performing bandwidth self-test...done. /usr/sbin/tor: md_rand.c: 325: ssleay_rand_add: Assertion `md_c[1] == md_count[1]' failed. Aborted ``` Accoding to openssl code it means that openssl was built without OPENSSL_THREADS ``` crypto/rand/md_rand.c 320- if (entropy < ENTROPY_NEEDED) /* stop counting when we have enough */ 321- entropy += add; 322- if (!do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND); 323- 324-#if !defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) 325: assert(md_c[1] == md_count[1]); 326-#endif 327- } 328- 329-static void ssleay_rand_seed(const void *buf, int num) 330- { ``` If OPENSSL_THREADS is required for tor to work, then tor should probably check for it in compile-time: ``` openssl-1.0.1/doc/crypto/threads.pod You can find out if OpenSSL was configured with thread support: #define OPENSSL_THREAD_DEFINES #include <openssl/opensslconf.h> #if defined(OPENSSL_THREADS) // thread support enabled #else // no thread support #endif ``` If OPENSSL_THREADS is not required, than it looks like either bug in tor itself or in tor<->openssl interaction. libopenssl - 1.0.1c-1 tor - 0.2.2.37-1 P.S. related OpenWrt ticket: https://dev.openwrt.org/ticket/12072
issue