View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003480 | GNUnet | testbed service | public | 2014-07-02 15:23 | 2018-06-07 00:25 |
Reporter | Bart Polot | Assigned To | Sree Harsha Totakura | ||
Priority | normal | Severity | crash | Reproducibility | unable to reproduce |
Status | closed | Resolution | fixed | ||
Product Version | 0.11.0pre66 | ||||
Target Version | 0.11.0pre66 | Fixed in Version | 0.11.0pre66 | ||
Summary | 0003480: Test crash on Ctrl+C | ||||
Description | Is this a testbed bug or am I doing something wrong? (gdb) bt #0 0x00007fba575fad67 in raise () from /usr/lib/libc.so.6 #1 0x00007fba575fc118 in abort () from /usr/lib/libc.so.6 #2 0x00007fba5991b7b4 in GNUNET_abort () at common_logging.c:289 #3 0x00007fba592d809d in check_readiness (op=0x14e1a40) at testbed_api_operations.c:743 #4 0x00007fba592d970f in recheck_waiting (opq=0x14c9dc0) at testbed_api_operations.c:1110 #5 0x00007fba592da1da in GNUNET_TESTBED_operation_release_ (op=0x14e1ab0) at testbed_api_operations.c:1294 #6 0x00007fba592d024b in GNUNET_TESTBED_operation_done (operation=0x14e1ab0) at testbed_api.c:1895 #7 0x0000000000401e1f in disconnect_cadet_peers (cls=0x1c0, tc=0x7fffdf9d79a0) at test_cadet.c:263 #8 0x00007fba59953076 in run_ready (rs=0x14885c0, ws=0x1488650) at scheduler.c:595 #9 0x00007fba5995391d in GNUNET_SCHEDULER_run (task=0x7fba5994dd97 <program_main>, task_cls=0x7fffdf9d7c30) at scheduler.c:817 #10 0x00007fba5994e928 in GNUNET_PROGRAM_run2 (argc=3, argv=0x7fffdf9d7dd0, binaryName=0x4055e4 "test_cadet_small", binaryHelp=0x7fba592eb329 "nohelp", options=0x7fffdf9d7d90, task=0x7fba592e28b5 <run>, task_cls=0x1486510, run_without_scheduler=0) at program.c:286 #11 0x00007fba5994ea7f in GNUNET_PROGRAM_run (argc=3, argv=0x7fffdf9d7dd0, binaryName=0x4055e4 "test_cadet_small", binaryHelp=0x7fba592eb329 "nohelp", options=0x7fffdf9d7d90, task=0x7fba592e28b5 <run>, task_cls=0x1486510) at program.c:325 #12 0x00007fba592e2bbc in GNUNET_TESTBED_test_run (testname=0x4055e4 "test_cadet_small", cfg_filename=0x405584 "test_cadet_drop.conf", num_peers=2, event_mask=0, cc=0x0, cc_cls=0x0, test_master=0x404c23 <cadet_test_run>, test_master_cls=0x1486430) at testbed_api_test.c:151 #13 0x0000000000404f9d in GNUNET_CADET_TEST_run (testname=0x4055e4 "test_cadet_small", cfgname=0x405584 "test_cadet_drop.conf", num_peers=2, tmain=0x403d80 <tmain>, tmain_cls=0x0, new_channel=0x4032a2 <incoming_channel>, cleaner=0x40358f <channel_cleaner>, handlers=0x6064e0 <handlers>, ports=0x6066c8 <ports>) at cadet_test_lib.c:288 #14 0x0000000000404770 in main (argc=1, argv=0x7fffdf9d7fd8) at test_cadet.c:968 (gdb) | ||||
Additional Information | #0 0x00007fba575fad67 in raise () from /usr/lib/libc.so.6 No symbol table info available. #1 0x00007fba575fc118 in abort () from /usr/lib/libc.so.6 No symbol table info available. #2 0x00007fba5991b7b4 in GNUNET_abort () at common_logging.c:289 No locals. #3 0x00007fba592d809d in check_readiness (op=0x14e1a40) at testbed_api_operations.c:743 evict_ops = 0x14e1ab0 ops = 0x4050e8 n_ops = 32698 n_evict_ops = 1496157920 i = 0 __FUNCTION__ = "check_readiness" #4 0x00007fba592d970f in recheck_waiting (opq=0x14c9dc0) at testbed_api_operations.c:1110 entry = 0x14e1b90 entry2 = 0xdf0adba0df0adba #5 0x00007fba592da1da in GNUNET_TESTBED_operation_release_ (op=0x14e1ab0) at testbed_api_operations.c:1294 entry = 0x14e17c0 opq = 0x14c9dc0 i = 0 __FUNCTION__ = "GNUNET_TESTBED_operation_release_" #6 0x00007fba592d024b in GNUNET_TESTBED_operation_done (operation=0x14e1ab0) at testbed_api.c:1895 No locals. #7 0x0000000000401e1f in disconnect_cadet_peers (cls=0x1c0, tc=0x7fffdf9d79a0) at test_cadet.c:263 line = 448 i = 0 __FUNCTION__ = "disconnect_cadet_peers" #8 0x00007fba59953076 in run_ready (rs=0x14885c0, ws=0x1488650) at scheduler.c:595 p = GNUNET_SCHEDULER_PRIORITY_SHUTDOWN pos = 0x14e1dd0 tc = {reason = GNUNET_SCHEDULER_REASON_SHUTDOWN, read_ready = 0x14885c0, write_ready = 0x1488650} __FUNCTION__ = "run_ready" #9 0x00007fba5995391d in GNUNET_SCHEDULER_run (task=0x7fba5994dd97 <program_main>, task_cls=0x7fffdf9d7c30) at scheduler.c:817 rs = 0x14885c0 ws = 0x1488650 timeout = {rel_value_us = 0} ret = 4 shc_int = 0x149e7a0 shc_term = 0x149e860 shc_quit = 0x149e9e0 shc_hup = 0x149eaa0 shc_pipe = 0x149e920 last_tr = 5187 busy_wait_warning = 0 pr = 0x14886e0 c = 0 '\000' __FUNCTION__ = "GNUNET_SCHEDULER_run" #10 0x00007fba5994e928 in GNUNET_PROGRAM_run2 (argc=3, argv=0x7fffdf9d7dd0, binaryName=0x4055e4 "test_cadet_small", binaryHelp=0x7fba592eb329 "nohelp", options=0x7fffdf9d7d90, task=0x7fba592e28b5 <run>, task_cls=0x1486510, run_without_scheduler=0) at program.c:286 cc = {args = 0x7fffdf9d7de8, cfgfile = 0x1488850 "test_cadet_drop.conf", task = 0x7fba592e28b5 <run>, task_cls = 0x1486510, cfg = 0x1486560} path = 0x1484700 "\240\207H\001" loglev = 0x0 logfile = 0x0 cfg_fn = 0x1488720 "~/.config/gnunet.conf" xdg = 0x0 ret = 3 cnt = 5 skew_offset = 4294967295 skew_variance = 140438336729278 clock_offset = 1 ---Type <return> to continue, or q <return> to quit--- cfg = 0x1486560 defoptions = {{shortName = 99 'c', name = 0x7fba5996da50 "config", argumentHelp = 0x7fba5996da57 "FILENAME", description = 0x7fba5996da60 "use configuration file FILENAME", require_argument = 1, processor = 0x7fba59940455 <GNUNET_GETOPT_set_string>, scls = 0x7fffdf9d7c38}, {shortName = 104 'h', name = 0x7fba5996da80 "help", argumentHelp = 0x0, description = 0x7fba5996da85 "print this help", require_argument = 0, processor = 0x7fba5993fef3 <GNUNET_GETOPT_format_help_>, scls = 0x7fba592eb329}, { shortName = 76 'L', name = 0x7fba5996da95 "log", argumentHelp = 0x7fba5996da99 "LOGLEVEL", description = 0x7fba5996daa8 "configure logging to use LOGLEVEL", require_argument = 1, processor = 0x7fba59940455 <GNUNET_GETOPT_set_string>, scls = 0x7fffdf9d7c28}, {shortName = 108 'l', name = 0x7fba5996daca "logfile", argumentHelp = 0x7fba5996dad2 "LOGFILE", description = 0x7fba5996dae0 "configure logging to write logs to LOGFILE", require_argument = 1, processor = 0x7fba59940455 <GNUNET_GETOPT_set_string>, scls = 0x7fffdf9d7c20}, {shortName = 118 'v', name = 0x7fba5996db0b "version", argumentHelp = 0x0, description = 0x7fba5996db13 "print the version number", require_argument = 0, processor = 0x7fba5993fead <GNUNET_GETOPT_print_version_>, scls = 0x7fba5996db2c}} allopts = 0x14885c0 gargs = 0x0 lpfx = 0x1488740 "\340\206H\001" spc = 0x0 __FUNCTION__ = "GNUNET_PROGRAM_run2" #11 0x00007fba5994ea7f in GNUNET_PROGRAM_run (argc=3, argv=0x7fffdf9d7dd0, binaryName=0x4055e4 "test_cadet_small", binaryHelp=0x7fba592eb329 "nohelp", options=0x7fffdf9d7d90, task=0x7fba592e28b5 <run>, task_cls=0x1486510) at program.c:325 No locals. #12 0x00007fba592e2bbc in GNUNET_TESTBED_test_run (testname=0x4055e4 "test_cadet_small", cfg_filename=0x405584 "test_cadet_drop.conf", num_peers=2, event_mask=0, cc=0x0, cc_cls=0x0, test_master=0x404c23 <cadet_test_run>, test_master_cls=0x1486430) at testbed_api_test.c:151 argv2 = {0x14864d0 "test_cadet_small", 0x7fba592eb2f0 "-c", 0x14864f0 "test_cadet_drop.conf", 0x0} options = {{shortName = 0 '\000', name = 0x0, argumentHelp = 0x0, description = 0x0, require_argument = 0, processor = 0x0, scls = 0x0}} rc = 0x1486510 ret = 0 __FUNCTION__ = "GNUNET_TESTBED_test_run" #13 0x0000000000404f9d in GNUNET_CADET_TEST_run (testname=0x4055e4 "test_cadet_small", cfgname=0x405584 "test_cadet_drop.conf", num_peers=2, tmain=0x403d80 <tmain>, tmain_cls=0x0, new_channel=0x4032a2 <incoming_channel>, cleaner=0x40358f <channel_cleaner>, handlers=0x6064e0 <handlers>, ports=0x6066c8 <ports>) at cadet_test_lib.c:288 ctx = 0x1486430 #14 0x0000000000404770 in main (argc=1, argv=0x7fffdf9d7fd8) at test_cadet.c:968 ports = {1, 0} config_file = 0x405584 "test_cadet_drop.conf" __FUNCTION__ = "main" (gdb) | ||||
Tags | No tags attached. | ||||
|
It's a fault of testbed's API. When you press Ctrl+C on the terminal, the testbed controller gets a SIGINT too and terminates. This results in the testbed API layer to clear up state, including operation queues. This is expected behavior. When you press Ctrl+C on the terminal, your local scheduler, too, shutsdown and the function disconnect_cadet_peers() is scheduled which then releases testbed operations. Also expected. Since these two events happen simultaneously, there is a race condition involved. You get the crash due to heap corruption which happens when the first event happens first. This should be fixed by SVN 33930. Please re-open if you observe the crash again. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-07-02 15:23 | Bart Polot | New Issue | |
2014-07-02 15:23 | Bart Polot | Status | new => assigned |
2014-07-02 15:23 | Bart Polot | Assigned To | => Sree Harsha Totakura |
2014-07-04 23:49 | Sree Harsha Totakura | Note Added: 0008508 | |
2014-07-04 23:49 | Sree Harsha Totakura | Status | assigned => resolved |
2014-07-04 23:49 | Sree Harsha Totakura | Resolution | open => fixed |
2014-09-30 10:32 | Christian Grothoff | Fixed in Version | => 0.11.0pre66 |
2014-09-30 10:32 | Christian Grothoff | Target Version | => 0.11.0pre66 |
2018-06-07 00:25 | Christian Grothoff | Status | resolved => closed |