[tor-bugs] #24251 [- Select a component]: circuit_free only circuit number 0

Tor Bug Tracker & Wiki blackhole at torproject.org
Sun Nov 12 09:56:07 UTC 2017


#24251: circuit_free only circuit number 0
--------------------------------------+--------------------
     Reporter:  Felixix               |      Owner:  (none)
         Type:  defect                |     Status:  new
     Priority:  Medium                |  Milestone:
    Component:  - Select a component  |    Version:
     Severity:  Normal                |   Keywords:
Actual Points:                        |  Parent ID:
       Points:                        |   Reviewer:
      Sponsor:                        |
--------------------------------------+--------------------
 Hi everybody

 {{{ Tor 0.3.2.4-alpha (git-940308f493edd10f) running on FreeBSD with
 Libevent 2.1.8-stable, OpenSSL LibreSSL 2.5.4, Zlib 1.2.8, Liblzma 5.2.2,
 and Libzstd 1.3.2. }}}

 The following output can be observed:
 {{{
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 0 (id: 0)
 marked for close at src/or/command.c:585 (orig reason: 512, new reason: 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 287478585 (id:
 0) marked for close at src/or/command.c:585 (orig reason: 512, new reason:
 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 1674209475
 (id: 0) marked for close at src/or/command.c:585 (orig reason: 512, new
 reason: 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 1882566763
 (id: 0) marked for close at src/or/command.c:585 (orig reason: 512, new
 reason: 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 361115214 (id:
 0) marked for close at src/or/command.c:585 (orig reason: 512, new reason:
 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 1845079337
 (id: 0) marked for close at src/or/command.c:585 (orig reason: 512, new
 reason: 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 341507119 (id:
 0) marked for close at src/or/command.c:585 (orig reason: 512, new reason:
 0)
 Nov 12 09:51:20.000 [info] circuit_mark_for_close_: Circuit 270872991 (id:
 0) marked for close at src/or/command.c:585 (orig reason: 512, new reason:
 0)
 ...
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 Nov 12 09:51:20.000 [info] circuit_free: Circuit 0 (id: 0) has been freed.
 ...
 }}}

 I look at a some minutes snap and count the `_mark` vs `_free` messages:
 {{{
 # cat torlog | grep "has been freed" | awk '{print $6}' | uniq -c
 24144 Circuit
 # cat torlog | grep "circuit_mark_for_close_" | awk '{print $6}' | uniq -c
 24143 Circuit
 }}}

 It looks like each `_mark` has a corresponding `_free` (with a difference
 of one). But all `_free` reporting the same number `n_circ_id`. Especially
 this should be (IMHO) avoided by:
 {{{
 circuitlist.c
 ...
 circuit_free(circuit_t *circ)
 ...
   /* We keep a copy of this so we can log its value before it gets unset.
 */
   n_circ_id = circ->n_circ_id;
 ...
   log_info(LD_CIRC, "Circuit %u (id: %" PRIu32 ") has been freed.",
            n_circ_id,
            CIRCUIT_IS_ORIGIN(circ) ?
               TO_ORIGIN_CIRCUIT(circ)->global_identifier : 0);
 }}}

 Well, the circuits are not effectively freed ? Am I missing something ?

 Cheers!

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/24251>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list