Tor triggers assert when run with "--key-expiration sign" but no ORPort
When I run "src/app/tor -f /tmp/empty --key-expiration sign", I get this backtrace:
Jun 28 19:59:21.805 [err] tor_assertion_failed_(): Bug: src/feature/relay/routerkeys.c:560: log_master_signing_key_cert_expiration: Assertion server_identity_key_is_set() failed; aborting. (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: Tor 0.4.5.0-alpha-dev (git-5336ac26693cdba4): Assertion server_identity_key_is_set() failed in log_master_signing_key_cert_expiration at src/feature/relay/routerkeys.c:560: . Stack trace: (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(log_backtrace_impl+0x56) [0x555555770436] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(tor_assertion_failed_+0x147) [0x55555576b497] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(log_cert_expiration+0x18a) [0x5555556c28aa] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(tor_run_main+0x109a) [0x5555555b58ca] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(tor_main+0x3a) [0x5555555b30ba] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(main+0x19) [0x5555555b2c79] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7ffff745409b] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Jun 28 19:59:21.806 [err] Bug: /home/arma/torgit/tor/src/app/tor(_start+0x2a) [0x5555555b2cca] (on Tor 0.4.5.0-alpha-dev 5336ac26693cdba4)
Here it is in gdb:
Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff7452535 in __GI_abort () at abort.c:79
#2 0x0000555555770b0e in tor_raw_abort_ () at src/lib/err/torerr.c:225
#3 0x000055555576b73e in tor_abort_ () at src/lib/log/util_bug.c:174
#4 0x00005555556c28af in log_master_signing_key_cert_expiration (
options=0x5555558bb610) at src/feature/relay/routerkeys.c:560
#5 log_cert_expiration () at src/feature/relay/routerkeys.c:599
#6 0x00005555555b58ca in tor_run_main (tor_cfg=tor_cfg@entry=0x55555588f260)
at src/app/main/main.c:1311
#7 0x00005555555b30ba in tor_main (argc=3, argv=0x7fffffffdc88)
at src/feature/api/tor_api.c:164
#8 0x00005555555b2c79 in main (argc=<optimized out>, argv=<optimized out>)
at src/app/main/tor_main.c:32
After some debugging, if I set "ORPort 9001" in my torrc or on my command-line, then Tor behaves as expected.
For a minimal fix, I'd want it to not crash, and instead tell me I need to set an ORPort.
For a more thorough fix, I'd want it to work even when I don't set an ORPort (since after all, I am running Tor to examine my local file and tell me about it, not to be a relay).