View Issue Details

IDProjectCategoryView StatusLast Update
0004010GNUnetcadet servicepublic2018-06-07 00:24
ReporterChristian Grothoff Assigned ToBart Polot  
PriorityhighSeveritycrashReproducibilityrandom
Status closedResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product VersionGit master 
Target Version0.11.0pre66Fixed in Version0.11.0pre66 
Summary0004010: cadet assertion failure after GCC_send_prebuilt_message returns NULL
DescriptionAssertion "NULL != fc->poll_msg" fails in gnunet-service-cadet_connection.c:1458.(gdb) ba
#0 0x00007fa933b58107 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007fa933b594e8 in __GI_abort () at abort.c:89
#2 0x00007fa93501e983 in GNUNET_abort_ () at common_logging.c:290
#3 0x0000000000415f3c in connection_poll (cls=0x22e0b58, tc=0x7ffff265e980) at gnunet-service-cadet_connection.c:1458
#4 0x00007fa93505b6c6 in run_ready (rs=0x22adc00, ws=0x22adc90) at scheduler.c:587
#5 0x00007fa93505bfba in GNUNET_SCHEDULER_run (task=0x7fa9350689c4 <service_task>, task_cls=0x7ffff265ed20) at scheduler.c:868
#6 0x00007fa93506a6d6 in GNUNET_SERVICE_run (argc=3, argv=0x7ffff265efb8, service_name=0x43c26a "cadet",
    options=GNUNET_SERVICE_OPTION_NONE, task=0x43542e <run>, task_cls=0x0) at service.c:1503
#7 0x000000000043579d in main (argc=3, argv=0x7ffff265efb8) at gnunet-service-cadet.c:174

(gdb) print *c
$3 = {t = 0x0, fwd_fc = {c = 0x22e0b50, queue_n = 1, queue_max = 11, last_pid_sent = 11, last_pid_recv = 4294967295, recv_bitmap = 0,
    last_ack_sent = 0, last_ack_recv = 11, poll_task = 0x0, poll_time = {rel_value_us = 128000000}, poll_msg = 0x0, ack_msg = 0x0},
  bck_fc = {c = 0x22e0b50, queue_n = 0, queue_max = 11, last_pid_sent = 4294967295, last_pid_recv = 12, recv_bitmap = 8191,
    last_ack_sent = 14, last_ack_recv = 0, poll_task = 0x0, poll_time = {rel_value_us = 1000000}, poll_msg = 0x0, ack_msg = 0x0},
  perf = 0x0, id = {
    bits = "\033D\345\062\323c\243\264\355\321}\371\350\021D\260\364\210wL\357\004\342\211\337\006 \373\346l\321", <incomplete sequence \3
31>}, path = 0x22cf310, fwd_maintenance_task = 0x22e91f0, bck_maintenance_task = 0x22eac20, maintenance_q = 0x0, next_peer = 0x0,
  prev_peer = 0x0, state = CADET_CONNECTION_DESTROYED, own_pos = 1, pending_messages = 2, destroy = 1, was_removed = 1,
  create_retry = 1, check_duplicates_task = 0x0}
(gdb) print *fc
$4 = {c = 0x22e0b50, queue_n = 1, queue_max = 11, last_pid_sent = 11, last_pid_recv = 4294967295, recv_bitmap = 0, last_ack_sent = 0,
  last_ack_recv = 11, poll_task = 0x0, poll_time = {rel_value_us = 128000000}, poll_msg = 0x0, ack_msg = 0x0}
TagsNo tags attached.

Activities

Bart Polot

2015-10-20 03:50

manager   ~0009754

The relevant bit is: state = CADET_CONNECTION_DESTROYED

I suspect that the connection is destroyed because the peer disconnected, hence it can't send a POLL. Probably the neighbor-disconnect iterator is not cancelling the poll task.

Bart Polot

2015-10-20 04:30

manager   ~0009755

Poll was not cancelled properly if a poll message was in the queue at the moment a neighbor disconnected. It was sent and triggered another poll task, which caused the assertion to fail.

Should be fixed in r36558.

amatus

2015-10-28 19:27

developer   ~0009824

Hit this again in rev 36579.

Program terminated with signal SIGABRT, Aborted.
#0 0x00007f59d547f107 in __GI_raise (sig=sig@entry=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007f59d547f107 in __GI_raise (sig=sig@entry=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007f59d54804e8 in __GI_abort () at abort.c:89
#2 0x00007f59d6b4fa1a in GNUNET_abort_ () at common_logging.c:290
#3 0x000000000041620e in connection_poll (cls=0x2167fe8, tc=0x7ffccbdedad0)
    at gnunet-service-cadet_connection.c:1460
#4 0x00007f59d6b8c921 in run_ready (rs=0x21207e0, ws=0x2120870)
    at scheduler.c:587
#5 0x00007f59d6b8d22e in GNUNET_SCHEDULER_run (
    task=0x7f59d6b99cdc <service_task>, task_cls=0x7ffccbdede60)
    at scheduler.c:868
#6 0x00007f59d6b9ba15 in GNUNET_SERVICE_run (argc=7, argv=0x7ffccbdee0f8,
    service_name=0x43c5aa "cadet", options=GNUNET_SERVICE_OPTION_NONE,
    task=0x435746 <run>, task_cls=0x0) at service.c:1503
#7 0x0000000000435ab5 in main (argc=7, argv=0x7ffccbdee0f8)
    at gnunet-service-cadet.c:174
(gdb) f 3
#3 0x000000000041620e in connection_poll (cls=0x2167fe8, tc=0x7ffccbdedad0)
    at gnunet-service-cadet_connection.c:1460
1460 gnunet-service-cadet_connection.c: No such file or directory.
(gdb) p *c
$1 = {t = 0x0, fwd_fc = {c = 0x2167fe0, queue_n = 0, queue_max = 11,
    last_pid_sent = 0, last_pid_recv = 4294967295, recv_bitmap = 0,
    last_ack_sent = 0, last_ack_recv = 0, poll_task = 0x0, poll_time = {
      rel_value_us = 2000000}, poll_msg = 0x0, ack_msg = 0x0}, bck_fc = {
    c = 0x2167fe0, queue_n = 0, queue_max = 11, last_pid_sent = 4294967295,
    last_pid_recv = 0, recv_bitmap = 1, last_ack_sent = 10, last_ack_recv = 0,
    poll_task = 0x0, poll_time = {rel_value_us = 1000000}, poll_msg = 0x0,
    ack_msg = 0x0}, perf = 0x0, id = {
    bits = "\202\201\177\344\273|\026\264t\311\361\222\024?\327|\241\302K\356\256\347\300\335\300ըPr\275\341#"}, path = 0x215f380,
  fwd_maintenance_task = 0x2168140, bck_maintenance_task = 0x214e230,
  maintenance_q = 0x0, next_peer = 0x0, prev_peer = 0x0,
  state = CADET_CONNECTION_DESTROYED, own_pos = 1, pending_messages = 2,
  destroy = 1, was_removed = 1, create_retry = 1, check_duplicates_task = 0x0}
(gdb) print *fc
$2 = {c = 0x2167fe0, queue_n = 0, queue_max = 11, last_pid_sent = 0,
  last_pid_recv = 4294967295, recv_bitmap = 0, last_ack_sent = 0,
  last_ack_recv = 0, poll_task = 0x0, poll_time = {rel_value_us = 2000000},
  poll_msg = 0x0, ack_msg = 0x0}

Bart Polot

2015-12-09 19:58

manager   ~0009988

Solved in r36749. I hope!

Issue History

Date Modified Username Field Change
2015-10-17 21:07 Christian Grothoff New Issue
2015-10-17 21:07 Christian Grothoff Status new => assigned
2015-10-17 21:07 Christian Grothoff Assigned To => Bart Polot
2015-10-20 03:50 Bart Polot Note Added: 0009754
2015-10-20 03:50 Bart Polot Status assigned => acknowledged
2015-10-20 04:30 Bart Polot Note Added: 0009755
2015-10-20 04:30 Bart Polot Status acknowledged => resolved
2015-10-20 04:30 Bart Polot Fixed in Version => 0.11.0pre66
2015-10-20 04:30 Bart Polot Resolution open => fixed
2015-10-28 19:27 amatus Note Added: 0009824
2015-10-28 19:27 amatus Status resolved => feedback
2015-10-28 19:27 amatus Resolution fixed => reopened
2015-10-28 19:28 amatus Status feedback => assigned
2015-12-09 19:58 Bart Polot Note Added: 0009988
2015-12-09 19:59 Bart Polot Status assigned => resolved
2015-12-09 19:59 Bart Polot Resolution reopened => fixed
2018-06-07 00:24 Christian Grothoff Status resolved => closed