[tor-bugs] #6984 [Tor Relay]: use after free crash after "eventdns rejected address [scrubbed]"

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Thu Sep 27 17:36:30 UTC 2012


#6984: use after free crash after "eventdns rejected address [scrubbed]"
-----------------------+----------------------------------------------------
 Reporter:  dhill      |          Owner:               
     Type:  defect     |         Status:  new          
 Priority:  major      |      Milestone:               
Component:  Tor Relay  |        Version:  Tor: 0.2.2.39
 Keywords:             |         Parent:               
   Points:             |   Actualpoints:               
-----------------------+----------------------------------------------------
 Running multiple tor nodes, they crash multiple times per day.  The only
 thing in the logfile is:

 Sep 27 12:08:34.784 [warn] eventdns rejected address [scrubbed]

 I enabled debugging and MALLOC_OPTIONS on OpenBSD and got the following:


 Sep 27 12:08:34.783 [debug] int connection_edge_process_relay_cell(cell_t
 *, circuit_t *, edge_connection_t *, crypt_path_t *)(): circ-level sendme
 at non-o
 , packagewindow 526.
 Sep 27 12:08:34.783 [debug] void circuit_resume_edge_reading(circuit_t *,
 crypt_path_t *)(): resuming
 Sep 27 12:08:34.783 [debug] int
 connection_or_process_cells_from_inbuf(or_connection_t *)(): 53: starting,
 inbuf_datalen 0 (0 pending in tls object).
 Sep 27 12:08:34.783 [debug] void conn_write_callback(int, short, void
 *)(): socket 1117 wants to write.
 Sep 27 12:08:34.784 [debug] int flush_chunk_tls(tor_tls_t *, buf_t *,
 chunk_t *, size_t, size_t *)(): flushed 512 bytes, 0 ready to flush, 0
 remain.
 Sep 27 12:08:34.784 [debug] int connection_handle_write_impl(connection_t
 *, int)(): After TLS write of 512: 0 read, 586 written
 Sep 27 12:08:34.784 [debug] int
 connection_or_flush_from_first_active_circuit(or_connection_t *, int,
 time_t)(): Made a circuit inactive.
 Sep 27 12:08:34.784 [debug] void conn_read_callback(int, short, void *)():
 socket 53 wants to read.
 Sep 27 12:08:34.784 [debug] int connection_read_to_buf(connection_t *,
 ssize_t *, int *)(): 53: starting, inbuf_datalen 0 (0 pending in tls
 object). at_most
 4.
 Sep 27 12:08:34.784 [debug] int connection_read_to_buf(connection_t *,
 ssize_t *, int *)(): After TLS read of 512: 549 read, 0 written
 Sep 27 12:08:34.784 [debug] int
 connection_or_process_cells_from_inbuf(or_connection_t *)(): 53: starting,
 inbuf_datalen 512 (0 pending in tls object).
 Sep 27 12:08:34.784 [debug] int circuit_receive_relay_cell(cell_t *,
 circuit_t *, cell_direction_t)(): Sending away from origin.
 Sep 27 12:08:34.784 [debug] int connection_edge_process_relay_cell(cell_t
 *, circuit_t *, edge_connection_t *, crypt_path_t *)(): Now seen 33189527
 relay ce
 ere (command 1, stream 39854).
 Sep 27 12:08:34.784 [debug] int connection_exit_begin_conn(cell_t *,
 circuit_t *)(): Creating new exit connection.
 Sep 27 12:08:34.784 [debug] int connection_exit_begin_conn(cell_t *,
 circuit_t *)(): about to start the dns_resolve().
 Sep 27 12:08:34.784 [debug] int dns_resolve_impl(edge_connection_t *, int,
 or_circuit_t *, char **)(): Launching [scrubbed].
 Sep 27 12:08:34.784 [info] int launch_resolve(edge_connection_t *)():
 Launching eventdns request for [scrubbed]
 Sep 27 12:08:34.784 [info] eventdns: Resolve requested.
 Sep 27 12:08:34.784 [warn] eventdns rejected address [scrubbed].
 Sep 27 12:08:34.784 [debug] void dns_cancel_pending_resolve(const char
 *)(): Failing all connections waiting on DNS resolve of [scrubbed]
 Sep 27 12:08:34.784 [debug] int connection_edge_end(edge_connection_t *,
 uint8_t)(): No circ to send end on conn (fd -1).
 Sep 27 12:08:34.784 [debug] int relay_send_command_from_edge(streamid_t,
 circuit_t *, uint8_t, const char *, size_t, crypt_path_t *)(): delivering
 3 cell ba
 d.
 Sep 27 12:08:34.784 [debug] void append_cell_to_circuit_queue(circuit_t *,
 or_connection_t *, cell_t *, cell_direction_t, streamid_t)(): Made a
 circuit acti
 Sep 27 12:08:34.784 [debug] void append_cell_to_circuit_queue(circuit_t *,
 or_connection_t *, cell_t *, cell_direction_t, streamid_t)(): Primed a
 buffer.
 Sep 27 12:08:34.784 [debug] int
 connection_or_flush_from_first_active_circuit(or_connection_t *, int,
 time_t)(): Made a circuit inactive.
 Sep 27 12:08:34.784 [debug] int
 connection_or_process_cells_from_inbuf(or_connection_t *)(): 53: starting,
 inbuf_datalen 0 (0 pending in tls object).
 Sep 27 12:08:34.784 [debug] void conn_write_callback(int, short, void
 *)(): socket 1117 wants to write.
 tor in free(): error: chunk is already free 0x202974900
 Abort trap


 I do not have a core.

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


More information about the tor-bugs mailing list