View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003453 | GNUnet | cadet service | public | 2014-06-24 05:35 | 2018-06-07 00:25 |
Reporter | Bart Polot | Assigned To | Bart Polot | ||
Priority | high | Severity | crash | Reproducibility | unable to reproduce |
Status | closed | Resolution | fixed | ||
Product Version | Git master | ||||
Target Version | 0.11.0pre66 | Fixed in Version | 0.11.0pre66 | ||
Summary | 0003453: Cadet crash in connection sent callback after a posthumous CONNECTION_DESTROY | ||||
Description | #0 0x000000000040e09f in conn_message_sent (cls=0x1ec71a0, c=0x0, sent=1, type=266, pid=0, fwd=1, size=36, wait=...) at gnunet-service-cadet_connection.c:606 606 LOG (GNUNET_ERROR_TYPE_DEBUG, " C_P- %p %u\n", c, c->pending_messages); (gdb) bt #0 0x000000000040e09f in conn_message_sent (cls=0x1ec71a0, c=0x0, sent=1, type=266, pid=0, fwd=1, size=36, wait=...) at gnunet-service-cadet_connection.c:606 #1 0x0000000000426ad6 in GCP_queue_destroy (queue=0x1edf3b0, clear_cls=0, sent=1, pid=0) at gnunet-service-cadet_peer.c:1135 #2 0x000000000042630f in queue_send (cls=0x1ec9200, size=1099, buf=0x1ef42e8) at gnunet-service-cadet_peer.c:1023 #3 0x00007fe376b9be5d in transmit_message (cls=0x1ec74a0, size=1155, buf=0x1ef42b0) at core_api.c:661 #4 0x00007fe376fc8864 in client_notify (cls=0x1ecd6f0, size=1155, buf=0x1ef42b0) at client.c:1168 #5 0x00007fe376fd5899 in process_notify (connection=0x1ec7560) at connection.c:1182 #6 0x00007fe376fd63d4 in transmit_ready (cls=0x1ec7560, tc=0x7ffffbdb19f0) at connection.c:1313 #7 0x00007fe37700306a in run_ready (rs=0x1ecb220, ws=0x1ecb2b0) at scheduler.c:595 #8 0x00007fe377003911 in GNUNET_SCHEDULER_run (task=0x7fe37700fc56 <service_task>, task_cls=0x7ffffbdb1d70) at scheduler.c:817 #9 0x00007fe377011a11 in GNUNET_SERVICE_run (argc=3, argv=0x7ffffbdb2008, service_name=0x43233a <__FUNCTION__.13802+2> "D_search", options=GNUNET_SERVICE_OPTION_NONE, task=0x42c760 <GC_min_pid+25>, task_cls=0x0) at service.c:1498 #10 0x000000000042cae8 in shutdown_task (cls=0x3004035c0, tc=0x7ffffbdb2008) at gnunet-service-cadet.c:117 #11 0x00007fe374ecf000 in __libc_start_main () from /usr/lib/libc.so.6 #12 0x00000000004035e9 in _start () (gdb) | ||||
Additional Information | (gdb) bt full #0 0x000000000040e09f in conn_message_sent (cls=0x1ec71a0, c=0x0, sent=1, type=266, pid=0, fwd=1, size=36, wait=...) at gnunet-service-cadet_connection.c:606 log_line = 606 log_call_enabled = 1 p = 0x7ffffbdb1620 fc = 0x8 q = 0x1ec71a0 usecsperbyte = 3.2208495179655868e-317 forced = 1 __FUNCTION__ = "conn_message_sent" #1 0x0000000000426ad6 in GCP_queue_destroy (queue=0x1edf3b0, clear_cls=0, sent=1, pid=0) at gnunet-service-cadet_peer.c:1135 __x__ = 0x42c606 <path_debug+295> peer = 0x1ec9200 __FUNCTION__ = "GCP_queue_destroy" #2 0x000000000042630f in queue_send (cls=0x1ec9200, size=1099, buf=0x1ef42e8) at gnunet-service-cadet_peer.c:1023 log_line = -69527728 log_call_enabled = 1 peer = 0x1ec9200 c = 0x0 queue = 0x1edf3b0 dst_id = 0x1ec73d0 data_size = 36 pid = 0 __FUNCTION__ = "queue_send" #3 0x00007fe376b9be5d in transmit_message (cls=0x1ec74a0, size=1155, buf=0x1ef42b0) at core_api.c:661 h = 0x1ec74a0 cm = 0x0 th = 0x1ec9cb8 pr = 0x1ec9c80 sm = 0x1ef42b0 hdr = 0x1ecd868 msize = 0 ret = 140737418829824 __FUNCTION__ = "transmit_message" #4 0x00007fe376fc8864 in client_notify (cls=0x1ecd6f0, size=1155, buf=0x1ef42b0) at client.c:1168 th = 0x1ecd6f0 client = 0x1ec7720 ret = 56 delay = {rel_value_us = 140737418828032} __FUNCTION__ = "client_notify" #5 0x00007fe376fd5899 in process_notify (connection=0x1ec7560) at connection.c:1182 used = 0 avail = 1155 size = 92 notify = 0x7fe376fc824f <client_notify> __FUNCTION__ = "process_notify" #6 0x00007fe376fd63d4 in transmit_ready (cls=0x1ec7560, tc=0x7ffffbdb19f0) at connection.c:1313 connection = 0x1ec7560 notify = 0x7fe377002943 <is_ready+205> ret = 0 have = 32289456 __FUNCTION__ = "transmit_ready" #7 0x00007fe37700306a in run_ready (rs=0x1ecb220, ws=0x1ecb2b0) at scheduler.c:595 p = GNUNET_SCHEDULER_PRIORITY_DEFAULT pos = 0x1ec9b60 tc = {reason = (GNUNET_SCHEDULER_REASON_WRITE_READY | GNUNET_SCHEDULER_REASON_PREREQ_DONE), read_ready = 0x1ecb220, write_ready = 0x1ecb2b0} __FUNCTION__ = "run_ready" #8 0x00007fe377003911 in GNUNET_SCHEDULER_run (task=0x7fe37700fc56 <service_task>, task_cls=0x7ffffbdb1d70) at scheduler.c:817 rs = 0x1ecb220 ws = 0x1ecb2b0 ---Type <return> to continue, or q <return> to quit--- timeout = {rel_value_us = 1716202} ret = 1 shc_int = 0x1ecc460 shc_term = 0x1ecc520 shc_quit = 0x1ecc6a0 shc_hup = 0x1ecc760 shc_pipe = 0x1ecc5e0 last_tr = 21987 busy_wait_warning = 0 pr = 0x1ecdb00 c = 0 '\000' __FUNCTION__ = "GNUNET_SCHEDULER_run" #9 0x00007fe377011a11 in GNUNET_SERVICE_run (argc=3, argv=0x7ffffbdb2008, service_name=0x43233a <__FUNCTION__.13802+2> "D_search", options=GNUNET_SERVICE_OPTION_NONE, task=0x42c760 <GC_min_pid+25>, task_cls=0x0) at service.c:1498 err = 0 ret = 3 cfg_fn = 0x1ec37c0 "~/.config/gnunet.conf" opt_cfg_fn = 0x1ec3910 "/tmp/testbedyOrDbt/0/config" loglev = 0x0 logfile = 0x0 do_daemonize = 0 i = 4376416 skew_offset = 140614937441416 skew_variance = 4294967295 clock_offset = 4208064 sctx = {cfg = 0x1ec37e0, server = 0x1eccb10, addrs = 0x1ec5910, service_name = 0x43233a <__FUNCTION__.13802+2> "D_search", task = 0x42c760 <GC_min_pid+25>, task_cls = 0x0, v4_denied = 0x0, v6_denied = 0x0, v4_allowed = 0x1eda850, v6_allowed = 0x1ecb1c0, my_handlers = 0x1ec58d0, addrlens = 0x1ecde20, lsocks = 0x0, shutdown_task = 4, timeout = { rel_value_us = 18446744073709551615}, ret = 1, ready_confirm_fd = -1, require_found = 1, match_uid = 1, match_gid = 1, options = GNUNET_SERVICE_OPTION_NONE} cfg = 0x1ec37e0 xdg = 0x0 service_options = {{shortName = 99 'c', name = 0x7fe37701f9ad "config", argumentHelp = 0x7fe37701f9b4 "FILENAME", description = 0x7fe37701f9c0 "use configuration file FILENAME", require_argument = 1, processor = 0x7fe376ff0455 <GNUNET_GETOPT_set_string>, scls = 0x7ffffbdb1e28}, {shortName = 100 'd', name = 0x7fe37701f9e0 "daemonize", argumentHelp = 0x0, description = 0x7fe37701f9f0 "do daemonize (detach from terminal)", require_argument = 0, processor = 0x7fe376ff0428 <GNUNET_GETOPT_set_one>, scls = 0x7ffffbdb1e14}, {shortName = 104 'h', name = 0x7fe37701fa14 "help", argumentHelp = 0x0, description = 0x7fe37701fa19 "print this help", require_argument = 0, processor = 0x7fe376fefef3 <GNUNET_GETOPT_format_help_>, scls = 0x0}, { shortName = 76 'L', name = 0x7fe37701fa29 "log", argumentHelp = 0x7fe37701fa2d "LOGLEVEL", description = 0x7fe37701fa38 "configure logging to use LOGLEVEL", require_argument = 1, processor = 0x7fe376ff0455 <GNUNET_GETOPT_set_string>, scls = 0x7ffffbdb1e20}, {shortName = 108 'l', name = 0x7fe37701fa5a "logfile", argumentHelp = 0x7fe37701fa62 "LOGFILE", description = 0x7fe37701fa70 "configure logging to write logs to LOGFILE", require_argument = 1, processor = 0x7fe376ff0455 <GNUNET_GETOPT_set_string>, scls = 0x7ffffbdb1e18}, {shortName = 118 'v', name = 0x7fe37701fa9b "version", argumentHelp = 0x0, description = 0x7fe37701faa3 "print the version number", require_argument = 0, processor = 0x7fe376fefead <GNUNET_GETOPT_print_version_>, scls = 0x7fe37701fabc}, { shortName = 0 '\000', name = 0x0, argumentHelp = 0x0, description = 0x0, require_argument = 0, processor = 0x0, scls = 0x0}} __FUNCTION__ = "GNUNET_SERVICE_run" #10 0x000000000042cae8 in shutdown_task (cls=0x3004035c0, tc=0x7ffffbdb2008) at gnunet-service-cadet.c:117 __FUNCTION__ = "shutdown_task" #11 0x00007fe374ecf000 in __libc_start_main () from /usr/lib/libc.so.6 No symbol table info available. #12 0x00000000004035e9 in _start () No symbol table info available. (gdb) (gdb) p *queue $1 = {next = 0x0, prev = 0x0, peer = 0x1ec9200, c = 0x0, fwd = 1, cls = 0x1ede840, type = 266, payload_type = 266, payload_id = 0, size = 36, start_waiting = {abs_value_us = 1403577969300271}, callback = 0x40dcf7 <conn_message_sent>, callback_cls = 0x1ec71a0} (gdb) | ||||
Tags | No tags attached. | ||||
|
Workaround in r33829 |
|
Workaroud is a valid fix. The connection handle is made NULL in GCP_queue_cancel (_cadet_peer.c:1305 in r33835) as the connection is destroyed before the message announcing the destruction can leave the queue. Calling the continuation and handling the NULL case is better than cancelling the continuation, as it provides with debug messages that may be necessary in the future. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-06-24 05:35 | Bart Polot | New Issue | |
2014-06-24 05:35 | Bart Polot | Status | new => assigned |
2014-06-24 05:35 | Bart Polot | Assigned To | => Bart Polot |
2014-06-24 16:15 | Bart Polot | Note Added: 0008464 | |
2014-06-24 17:24 | Bart Polot | Note Added: 0008467 | |
2014-06-24 17:24 | Bart Polot | Status | assigned => resolved |
2014-06-24 17:24 | Bart Polot | Fixed in Version | => Git master |
2014-06-24 17:24 | Bart Polot | Resolution | open => fixed |
2014-06-27 21:56 | Christian Grothoff | Fixed in Version | Git master => 0.11.0pre66 |
2018-06-07 00:25 | Christian Grothoff | Status | resolved => closed |