#24251 closed defect (not a bug)

circuit_free only circuit number 0

Reported by: Felixix Owned by:
Priority: Medium Milestone:
Component: - Select a component Version:
Severity: Normal Keywords:
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

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!

Child Tickets

Change History (2)

comment:1 Changed 21 months ago by arma

That log message in circuit_free() logs "0, 0" if it's not your circuit, that is, the circuit did not start at you. So this is fine and normal.

comment:2 Changed 21 months ago by dgoulet

Resolution: not a bug
Status: newclosed
Note: See TracTickets for help on using tickets.