View Issue Details

IDProjectCategoryView StatusLast Update
0005464GNUnetcadet servicepublic2019-02-28 11:17
Reporterch3 Assigned ToChristian Grothoff  
PrioritynormalSeveritycrashReproducibilitysometimes
Status closedResolutionfixed 
Product VersionGit master 
Target Version0.11.0Fixed in Version0.11.0 
Summary0005464: Cadet crash (rps profiler)
DescriptionCadet crashes on me when running the rps profiler:

GNU gdb (GDB) 8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/ch3/.local/lib//gnunet/libexec/gnunet-service-cadet...done.

warning: core file may not match specified executable file.
[New LWP 72280]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/gnu/store/l4lr0f5cjd0nbsaaf8b5dmcw1a1yypr3-glibc-2.27/lib/libthread_db.so.1".
Core was generated by `/home/ch3/.local/lib//gnunet/libexec/gnunet-service-cadet -c /tmp/testbedTsOtWF'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 GNUNET_SCHEDULER_cancel (task=0xdf0adba0df0adba) at scheduler.c:969
969 if (is_fd_task)
(gdb) bt
#0 GNUNET_SCHEDULER_cancel (task=0xdf0adba0df0adba) at scheduler.c:969
#1 0x0000000000409aac in GCCH_bind (ch=ch@entry=0x244c330, c=0x24b1db0, port=port@entry=0x2530fe8)
    at gnunet-service-cadet_channel.c:991
#2 0x000000000040709b in bind_loose_channel (cls=cls@entry=0x2530fe0, port=port@entry=0x2531028, value=0x244c330)
    at gnunet-service-cadet.c:455
#3 0x00007fee93ac4740 in GNUNET_CONTAINER_multihashmap_get_multiple (map=<optimized out>, key=key@entry=0x2531028,
    it=it@entry=0x407080 <bind_loose_channel>, it_cls=it_cls@entry=0x2530fe0) at container_multihashmap.c:855
#4 0x0000000000406fc6 in handle_port_open (cls=0x24b1db0, pmsg=0x25c15b0) at gnunet-service-cadet.c:509
#5 0x00007fee93af505a in service_client_mst_cb (cls=0x25b3380, message=0x25c15b0) at service.c:2160
#6 0x00007fee93adf583 in GNUNET_MST_from_buffer (mst=0x2536910, buf=buf@entry=0x0, size=size@entry=0,
    purge=purge@entry=0, one_shot=-1, one_shot@entry=1) at mst.c:231
#7 0x00007fee93adfe1b in GNUNET_MST_read (mst=<optimized out>, sock=<optimized out>, purge=purge@entry=0,
    one_shot=one_shot@entry=1) at mst.c:374
#8 0x00007fee93afabe5 in service_client_recv (cls=0x25b3380) at service.c:2181
#9 0x00007fee93af3b2f in GNUNET_SCHEDULER_do_work (sh=sh@entry=0x2324a70) at scheduler.c:2113
#10 0x00007fee93af499a in select_loop (context=0x7fffc2cff2f0, sh=0x2324a70) at scheduler.c:2410
#11 GNUNET_SCHEDULER_run (task=task@entry=0x7fee93afa430 <service_main>, task_cls=task_cls@entry=0x7fffc2cff450)
    at scheduler.c:725
#12 0x00007fee93af91d2 in GNUNET_SERVICE_run_ (argc=<optimized out>, argv=<optimized out>,
    service_name=service_name@entry=0x41f100 "cadet", options=options@entry=GNUNET_SERVICE_OPTION_NONE,
    service_init_cb=service_init_cb@entry=0x405070 <run>, connect_cb=connect_cb@entry=0x404e60 <client_connect_cb>,
    disconnect_cb=0x404aa0 <client_disconnect_cb>, cls=0x0, handlers=0x7fffc2cff710) at service.c:1875
#13 0x0000000000404533 in main (argc=<optimized out>, argv=<optimized out>) at gnunet-service-cadet.c:1510
Steps To ReproduceRun:
.local/src/gnunet/src/rps/.libs/gnunet-rps-profiler -c test_rps.conf -n 128 -d 5m -r 10000 -l gnunet_rps_profiler.log
Additional Information(gdb) bt f
#0 GNUNET_SCHEDULER_cancel (task=0xdf0adba0df0adba) at scheduler.c:969
        p = <optimized out>
        is_fd_task = <error reading variable is_fd_task (Cannot access memory at address 0xdf0adba0df0adda)>
        ret = <optimized out>
        __FUNCTION__ = "GNUNET_SCHEDULER_cancel"
#1 0x0000000000409aac in GCCH_bind (ch=ch@entry=0x244c330, c=0x24b1db0, port=port@entry=0x2530fe8)
    at gnunet-service-cadet_channel.c:991
        options = <optimized out>
        cccd = <optimized out>
        __FUNCTION__ = "GCCH_bind"
#2 0x000000000040709b in bind_loose_channel (cls=cls@entry=0x2530fe0, port=port@entry=0x2531028, value=0x244c330)
    at gnunet-service-cadet.c:455
        op = 0x2530fe0
        ch = <optimized out>
        __FUNCTION__ = "bind_loose_channel"
        log_line = <optimized out>
        log_call_enabled = -1
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
#3 0x00007fee93ac4740 in GNUNET_CONTAINER_multihashmap_get_multiple (map=<optimized out>, key=key@entry=0x2531028,
    it=it@entry=0x407080 <bind_loose_channel>, it_cls=it_cls@entry=0x2530fe0) at container_multihashmap.c:855
        bme = <optimized out>
        nxt = 0x2516370
        count = 3
        me = <optimized out>
#4 0x0000000000406fc6 in handle_port_open (cls=0x24b1db0, pmsg=0x25c15b0) at gnunet-service-cadet.c:509
        c = 0x24b1db0
        op = 0x2530fe0
        __FUNCTION__ = "handle_port_open"
#5 0x00007fee93af505a in service_client_mst_cb (cls=0x25b3380, message=0x25c15b0) at service.c:2160
        client = 0x25b3380
        __FUNCTION__ = "service_client_mst_cb"
#6 0x00007fee93adf583 in GNUNET_MST_from_buffer (mst=0x2536910, buf=buf@entry=0x0, size=size@entry=0,
    purge=purge@entry=0, one_shot=-1, one_shot@entry=1) at mst.c:231
        hdr = <optimized out>
        delta = <optimized out>
        want = <optimized out>
        ibuf = 0x25c15b0 ""
        need_align = <optimized out>
        offset = <optimized out>
        ret = 1
        cbret = <optimized out>
        __FUNCTION__ = "GNUNET_MST_from_buffer"
        log_line = <optimized out>
        log_call_enabled = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        log_line = <optimized out>
        log_call_enabled = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
#7 0x00007fee93adfe1b in GNUNET_MST_read (mst=<optimized out>, sock=<optimized out>, purge=purge@entry=0,
    one_shot=one_shot@entry=1) at mst.c:374
        ret = <optimized out>
        left = <optimized out>
        buf = <optimized out>
        __FUNCTION__ = "GNUNET_MST_read"
#8 0x00007fee93afabe5 in service_client_recv (cls=0x25b3380) at service.c:2181
        client = 0x25b3380
        ret = <optimized out>
        __FUNCTION__ = "service_client_recv"
#9 0x00007fee93af3b2f in GNUNET_SCHEDULER_do_work (sh=sh@entry=0x2324a70) at scheduler.c:2113
        p = GNUNET_SCHEDULER_PRIORITY_DEFAULT
        pos = 0x247fb60
        now = <optimized out>
        __FUNCTION__ = "GNUNET_SCHEDULER_do_work"
        log_line = <optimized out>
        log_call_enabled = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
#10 0x00007fee93af499a in select_loop (context=0x7fffc2cff2f0, sh=0x2324a70) at scheduler.c:2410
        time_remaining = <optimized out>
        rs = 0x2322d40
        ws = 0x2322dd0
        select_result = <optimized out>
        rs = <optimized out>
        ws = <optimized out>
        select_result = <optimized out>
        __FUNCTION__ = "select_loop"
        log_line = <optimized out>
        log_call_enabled = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        time_remaining = <optimized out>
        log_line = <optimized out>
        log_call_enabled = 0
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        pos = <optimized out>
        log_line = <optimized out>
        log_call_enabled = -1
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        log_line = <optimized out>
        log_call_enabled = -1
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        pos = <optimized out>
        is_ready = <optimized out>
        log_line = <optimized out>
        log_call_enabled = -1
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
        _gnunet_boolean_var_ = <optimized out>
#11 GNUNET_SCHEDULER_run (task=task@entry=0x7fee93afa430 <service_main>, task_cls=task_cls@entry=0x7fffc2cff450)
    at scheduler.c:725
        sh = 0x2324a70
        driver = 0x2327040
        context = {scheduled_head = 0x24f7350, scheduled_tail = 0x2322b70, timeout = {
            abs_value_us = 1540984450026698}}
#12 0x00007fee93af91d2 in GNUNET_SERVICE_run_ (argc=<optimized out>, argv=<optimized out>,
    service_name=service_name@entry=0x41f100 "cadet", options=options@entry=GNUNET_SERVICE_OPTION_NONE,
    service_init_cb=service_init_cb@entry=0x405070 <run>, connect_cb=connect_cb@entry=0x404e60 <client_connect_cb>,
    disconnect_cb=0x404aa0 <client_disconnect_cb>, cls=0x0, handlers=0x7fffc2cff710) at service.c:1875
        sh = {cfg = 0x2319c00, service_name = 0x41f100 "cadet", service_init_cb = 0x405070 <run>,
          connect_cb = 0x404e60 <client_connect_cb>, disconnect_cb = 0x404aa0 <client_disconnect_cb>, cb_cls = 0x0,
          slc_head = 0x231bf80, slc_tail = 0x231bf80, clients_head = 0x25b3380, clients_tail = 0x25b3380,
          handlers = 0x2319c20, task_cls = 0x0, v4_denied = 0x0, v6_denied = 0x0, v4_allowed = 0x2325d50,
          v6_allowed = 0x23213b0, match_uid = 0, match_gid = 1, got_shutdown = 0,
          options = GNUNET_SERVICE_OPTION_NONE, ready_confirm_fd = -1, ret = 0, require_found = 1}
        cfg_filename = 0x2319be0 "~/.config/gnunet.conf"
        opt_cfg_filename = 0x2319ee0 "/tmp/testbedTsOtWF/11/config"
        loglev = 0x0
        xdg = 0x0
        logfile = 0x0
        do_daemonize = 0
        skew_offset = 140736461796480
        skew_variance = 140662663271952
        clock_offset = <optimized out>
        cfg = 0x2319c00
        ret = <optimized out>
        err = 0
        service_options = {{shortName = 99 'c', name = 0x7fee93b04c0b "config",
            argumentHelp = 0x7fee93b04c02 "FILENAME", description = 0x7fee93b04e90 "use configuration file FILENAME",
            require_argument = 1, option_mandatory = 0, processor = 0x7fee93adcf60 <set_filename>, cleaner = 0x0,
            scls = 0x7fffc2cff380}, {shortName = 100 'd', name = 0x7fee93b072ed "daemonize", argumentHelp = 0x0,
            description = 0x7fee93b078d0 "do daemonize (detach from terminal)", require_argument = 0,
            option_mandatory = 0, processor = 0x7fee93adcab0 <set_one>, cleaner = 0x0, scls = 0x7fffc2cff374}, {
            shortName = 104 'h', name = 0x7fee93b04bdd "help", argumentHelp = 0x0,
            description = 0x7fee93b04bd2 "print this help", require_argument = 0, option_mandatory = 0,
            processor = 0x7fee93adcb00 <format_help>, cleaner = 0x0, scls = 0x0}, {shortName = 76 'L',
            name = 0x7fee93b04bed "log", argumentHelp = 0x7fee93b04bf1 "LOGLEVEL",
            description = 0x7fee93b04e38 "configure logging to use LOGLEVEL", require_argument = 1,
            option_mandatory = 0, processor = 0x7fee93adce80 <set_string>, cleaner = 0x0, scls = 0x7fffc2cff388}, {
            shortName = 108 'l', name = 0x7fee93b04bfa "logfile", argumentHelp = 0x7fee93b04c02 "FILENAME",
            description = 0x7fee93b04e60 "configure logging to write logs to FILENAME", require_argument = 1,
            option_mandatory = 0, processor = 0x7fee93adcf60 <set_filename>, cleaner = 0x0, scls = 0x7fffc2cff390}, {
            shortName = 118 'v', name = 0x7fee93b04bb1 "version", argumentHelp = 0x0,
            description = 0x7fee93b04bb9 "print the version number", require_argument = 0, option_mandatory = 0,
            processor = 0x7fee93adcac0 <print_version>, cleaner = 0x0, scls = 0x7fee93b06393}, {shortName = 0 '\000',
            name = 0x0, argumentHelp = 0x0, description = 0x0, require_argument = 0, option_mandatory = 0,
            processor = 0x0, cleaner = 0x0, scls = 0x0}}
        __FUNCTION__ = "GNUNET_SERVICE_run_"
#13 0x0000000000404533 in main (argc=<optimized out>, argv=<optimized out>) at gnunet-service-cadet.c:1510
        mh = {{mv = 0x0, cb = 0x406da0 <handle_port_open>, cls = 0x0, type = 1022, expected_size = 68}, {mv = 0x0,
            cb = 0x406aa0 <handle_port_close>, cls = 0x0, type = 1023, expected_size = 68}, {mv = 0x0,
            cb = 0x406760 <handle_channel_create>, cls = 0x0, type = 1024, expected_size = 108}, {mv = 0x0,
            cb = 0x405950 <handle_channel_destroy>, cls = 0x0, type = 1025, expected_size = 8}, {
            mv = 0x405e20 <check_local_data>, cb = 0x406500 <handle_local_data>, cls = 0x0, type = 1020,
            expected_size = 8}, {mv = 0x0, cb = 0x4063a0 <handle_local_ack>, cls = 0x0, type = 1021,
            expected_size = 8}, {mv = 0x0, cb = 0x405900 <handle_get_peers>, cls = 0x0, type = 1036,
            expected_size = 4}, {mv = 0x0, cb = 0x406130 <handle_show_peer>, cls = 0x0, type = 1037,
            expected_size = 40}, {mv = 0x0, cb = 0x4058b0 <handle_info_tunnels>, cls = 0x0, type = 1032,
            expected_size = 4}, {mv = 0x0, cb = 0x405bc0 <handle_info_tunnel>, cls = 0x0, type = 1033,
            expected_size = 40}, {mv = 0x0, cb = 0x405610 <handle_info_dump>, cls = 0x0, type = 1038,
            expected_size = 4}, {mv = 0x0, cb = 0x0, cls = 0x0, type = 0, expected_size = 0}}
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _mv = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
        _cb = <optimized out>
TagsNo tags attached.

Activities

ch3

2018-10-31 12:41

developer   ~0013304

To be precise, I ran the profiler with valgrind:
valgrind --log-file=valgrind_gnunet-rps-profiler.log .libs/gnunet-rps-profiler -c test_rps.conf -n 128 -d 30m -r 10000 -l gnunet_rps_profiler.log

Christian Grothoff

2018-11-01 15:30

manager   ~0013305

43de1e4a084b7d9e773b05f173d516dc573de5c1 should help. (But did not try to reproduce, just tried to fix the dangling reference.)

ch3

2018-11-01 16:28

developer   ~0013306

Was not able to reproduce anymore.

Issue History

Date Modified Username Field Change
2018-10-31 12:37 ch3 New Issue
2018-10-31 12:37 ch3 Status new => assigned
2018-10-31 12:37 ch3 Assigned To => Bart Polot
2018-10-31 12:41 ch3 Note Added: 0013304
2018-11-01 15:30 Christian Grothoff Note Added: 0013305
2018-11-01 15:30 Christian Grothoff Assigned To Bart Polot => Christian Grothoff
2018-11-01 15:30 Christian Grothoff Status assigned => feedback
2018-11-01 15:30 Christian Grothoff Target Version => 0.11.0
2018-11-01 16:28 ch3 Status feedback => assigned
2018-11-01 16:28 ch3 Resolution open => fixed
2018-11-01 16:28 ch3 Fixed in Version => Git master
2018-11-01 16:28 ch3 Note Added: 0013306
2018-11-01 16:32 Christian Grothoff Status assigned => resolved
2018-11-01 16:32 Christian Grothoff Fixed in Version Git master => 0.11.0
2019-02-28 11:17 Christian Grothoff Status resolved => closed