Opened 8 years ago

Closed 8 years ago

Last modified 7 years ago

#3047 closed defect (fixed)

Assertion on master: circuitbuild.c:2968: onion_pick_cpath_exit: Assertion exit failed; aborting

Reported by: nickm Owned by: nickm
Priority: Very High Milestone: Tor: 0.2.3.1-alpha
Component: Core Tor/Tor Version:
Severity: Keywords: tor-relay
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

21:33 < armadev> Apr 29 15:15:29.000 [err] onion_pick_cpath_exit(): Bug:
                 circuitbuild.c:2968: onion_pick_cpath_exit: Assertion exit
                 failed; aborting.
21:33 < armadev> fun
21:34 < armadev> moria1 running master inside valgrind

Child Tickets

Change History (10)

comment:1 Changed 8 years ago by arma

Running git master c48d6da24c403f

comment:2 Changed 8 years ago by Sebastian

looks like choose_good_exit_server() returned a node that we didn't have a routerinfo_t or microdescriptor_t for

comment:3 Changed 8 years ago by Sebastian

wanoskarnet in #tor suggested a fix that I've put into branch bug3047 in my repository. It looks like it might work on first glance, but haven't had a chance to really review it yet. Don't want it to get lost.

comment:4 Changed 8 years ago by arma

For posterity, here are my intro-level logs. moria1 offers a hidden service. It was running inside valgrind, meaning everything takes longer than it should, so it's quite possible we had established reachability of very few relays by the point of the assert.

Apr 29 15:15:29.000 [info] rend_services_introduce(): Picked router sandvine as an intro point for xxx.
Apr 29 15:15:29.000 [info] rend_service_launch_establish_intro(): Launching circuit to introduction point "gpfTOR5" for service xxx
Apr 29 15:15:29.000 [info] circuit_launch_by_extend_info(): Cannibalizing circ 'PPrivCom025' for purpose 14 (Hidden service: Establishing introduction point)
Apr 29 15:15:29.000 [info] rend_service_launch_establish_intro(): The intro circuit we just cannibalized ends at $00FF681195F8868F3070963AD5F6E07B6CBA18E5, but we requested an intro circuit to $01A2B9FA4F68B26F25427C87EE866A255309F8D5. Updating our service.
Apr 29 15:15:29.000 [info] rend_service_intro_has_opened(): Established circuit 38799 as introduction point for service xxx
Apr 29 15:15:29.000 [info] rend_service_launch_establish_intro(): Launching circuit to introduction point "sandvine" for service xxx
Apr 29 15:15:29.000 [info] onion_pick_cpath_exit(): Using requested exit node 'sandvine'
Apr 29 15:15:29.000 [info] smartlist_choose_node_by_bandwidth_weights(): Empty routerlist passed in to consensus weight node selection for rule weight as guard
Apr 29 15:15:29.000 [info] smartlist_choose_node_by_bandwidth(): Empty routerlist passed in to old node selection for rule weight as guard
Apr 29 15:15:29.000 [info] router_choose_random_node(): We couldn't find any live, stable, guard routers; falling back to list of all routers.
Apr 29 15:15:29.000 [info] node_get_by_nickname(): The name "PPrivCom012" is listed as Unnamed: there is some router that holds it, but not one listed in the current consensus.
Apr 29 15:15:29.000 [info] node_get_by_nickname(): The name "PPrivCom013" is listed as Unnamed: there is some router that holds it, but not one listed in the current consensus.
Apr 29 15:15:29.000 [info] node_get_by_nickname(): The name "PPrivCom014" is listed as Unnamed: there is some router that holds it, but not one listed in the current consensus.
Apr 29 15:15:29.000 [info] node_get_by_nickname(): The name "PPrivCom021" is listed as Unnamed: there is some router that holds it, but not one listed in the current consensus.
Apr 29 15:15:29.000 [info] smartlist_choose_node_by_bandwidth_weights(): Empty routerlist passed in to consensus weight node selection for rule weight as middle node
Apr 29 15:15:29.000 [info] smartlist_choose_node_by_bandwidth(): Empty routerlist passed in to old node selection for rule no weighting
Apr 29 15:15:29.000 [info] router_choose_random_node(): We couldn't find any live, stable routers; falling back to list of all routers.
Apr 29 15:15:29.000 [info] circuit_send_next_onion_skin(): First hop: finished sending CREATE cell to 'PPrivCom025'
Apr 29 15:15:29.000 [info] circuit_predict_and_launch_new(): Have 5 clean circs (2 internal), need another exit circ.
Apr 29 15:15:29.000 [info] choose_good_exit_server_general(): Found 0 servers that might support 0/1 pending connections.
Apr 29 15:15:29.000 [info] choose_good_exit_server_general(): We couldn't find any live, fast routers; falling back to list of all routers.
Apr 29 15:15:29.000 [info] choose_good_exit_server_general(): Found 11 servers that might support 1/1 pending connections.
Apr 29 15:15:29.000 [info] choose_good_exit_server_general(): Chose exit server 'kato'
Apr 29 15:15:29.000 [err] onion_pick_cpath_exit(): Bug: circuitbuild.c:2968: onion_pick_cpath_exit: Assertion exit failed; aborting.

comment:5 in reply to:  3 Changed 8 years ago by arma

Replying to Sebastian:

wanoskarnet in #tor suggested a fix that I've put into branch bug3047 in my repository. It looks like it might work on first glance, but haven't had a chance to really review it yet. Don't want it to get lost.

I agree it also looks plausible. I'd want nickm to look at it too, since he messed with node stuff in master last (and most).

It also looks like this is a master thing, not a maint-0.2.2 thing.

comment:6 Changed 8 years ago by Sebastian

yup, I now think it is the right fix. and it is definitely a fix on master.

comment:7 Changed 8 years ago by Sebastian

Status: newneeds_review

comment:8 Changed 8 years ago by nickm

Resolution: fixed
Status: needs_reviewclosed

Yes, that looks right. Thanks, wanoskarnet!

(merging and closing).

comment:9 Changed 7 years ago by nickm

Keywords: tor-relay added

comment:10 Changed 7 years ago by nickm

Component: Tor RelayTor
Note: See TracTickets for help on using tickets.