diff options
-rw-r--r-- | changes/8185_diagnostic | 4 | ||||
-rw-r--r-- | src/or/relay.c | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/changes/8185_diagnostic b/changes/8185_diagnostic new file mode 100644 index 0000000000..b809c4f3ee --- /dev/null +++ b/changes/8185_diagnostic @@ -0,0 +1,4 @@ + o Minor features (logging diagnostic): + - Log more circuit information whenever we are about to try to + package a relay cell on a circuit with a nonexistent n_chan. + Attempt to diagnose bug 8185. diff --git a/src/or/relay.c b/src/or/relay.c index 2bfec342d3..ef4b1f423f 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -500,7 +500,15 @@ circuit_package_relay_cell(cell_t *cell, circuit_t *circ, chan = circ->n_chan; if (!chan) { log_warn(LD_BUG,"outgoing relay cell sent from %s:%d has n_chan==NULL." - " Dropping.", filename, lineno); + " Dropping. Circuit is in state %s (%d), and is " + "%smarked for close. (%s:%d, %d)", filename, lineno, + circuit_state_to_string(circ->state), circ->state, + circ->marked_for_close ? "" : "not ", + circ->marked_for_close_file?circ->marked_for_close_file:"", + circ->marked_for_close, circ->marked_for_close_reason); + if (CIRCUIT_IS_ORIGIN(circ)) { + circuit_log_path(LOG_WARN, LD_BUG, TO_ORIGIN_CIRCUIT(circ)); + } log_backtrace(LOG_WARN,LD_BUG,""); return 0; /* just drop it */ } |