View Issue Details

IDProjectCategoryView StatusLast Update
0003453GNUnetcadet servicepublic2018-06-07 00:25
ReporterBart Polot Assigned ToBart Polot  
PriorityhighSeveritycrashReproducibilityunable to reproduce
Status closedResolutionfixed 
Product VersionGit master 
Target Version0.11.0pre66Fixed in Version0.11.0pre66 
Summary0003453: 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)


TagsNo tags attached.

Activities

Bart Polot

2014-06-24 16:15

manager   ~0008464

Workaround in r33829

Bart Polot

2014-06-24 17:24

manager   ~0008467

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.

Issue History

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