Commit 1b6ccb52 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Log more information when bug8185 is about to trigger.

My current theory is that this is just a marked circuit that hasn't
closed yet, but let's gather more information in case that theory is
wrong.

Diagnostic for 8185.
parent 4e6374c2
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
  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.
+9 −1
Original line number Diff line number Diff line
@@ -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 */
    }