skupperproject / skupper-router

An application-layer router for Skupper networks
https://skupper.io
Apache License 2.0
14 stars 18 forks source link

c_unittests failed with LeakSanitizer leak in qdr_core_subscribe #989

Open jiridanek opened 1 year ago

jiridanek commented 1 year ago

https://github.com/skupperproject/skupper-router/actions/runs/4392581183/jobs/7692426562#step:30:2791

68: ==4651==ERROR: LeakSanitizer: detected memory leaks
68: 
68: Direct leak of 56 byte(s) in 1 object(s) allocated from:
68:     #0 0x7faba71766af in __interceptor_malloc (/lib64/libasan.so.8+0xba6af)
68:     #1 0x8fe9bd in qd_malloc /home/runner/work/skupper-router/skupper-router/skupper-router/include/qpid/dispatch/ctools.h:225
68:     #2 0x8fe9bd in qdr_core_subscribe /home/runner/work/skupper-router/skupper-router/skupper-router/src/router_core/route_tables.c:147
68:     #3 0x7ec280 in _vflow_init_address_watch_TH /home/runner/work/skupper-router/skupper-router/skupper-router/src/vanflow.c:1531
68:     #4 0x7dc7c2 in _vflow_thread /home/runner/work/skupper-router/skupper-router/skupper-router/src/vanflow.c:1216
68:     #5 0x7faba583912c in start_thread (/lib64/libc.so.6+0x8b12c)
68: 
68: SUMMARY: AddressSanitizer: 56 byte(s) leaked in 1 allocation(s).
24/34 Test #68: c_unittests ..........................***Failed   25.77 sec

https://github.com/skupperproject/skupper-router/blob/f5078c52a52b0b1445c11b4bc5f5891309c3d1c0/src/vanflow.c#L1591

https://github.com/skupperproject/skupper-router/blob/f5078c52a52b0b1445c11b4bc5f5891309c3d1c0/src/vanflow.c#L1209-L1226

https://github.com/skupperproject/skupper-router/blob/f5078c52a52b0b1445c11b4bc5f5891309c3d1c0/src/vanflow.c#L1513-L1533

https://github.com/skupperproject/skupper-router/blob/f5078c52a52b0b1445c11b4bc5f5891309c3d1c0/src/router_core/route_tables.c#L138-L153

I am guessing this is an unfortunate shutdown leak, possibly exacerbated by whatever c_unittests is doing.

jiridanek commented 1 year ago

I tried investigating and I don't see how could this possibly be leaking (in a flaky manner, in this case). The subscription should be always freed, even when discarding.

jiridanek commented 1 year ago

https://app.travis-ci.com/github/skupperproject/skupper-router/jobs/598878852#L8177

72: Direct leak of 56 byte(s) in 1 object(s) allocated from:
817872:     #0 0x4d2668 in malloc (/home/travis/build/skupperproject/skupper-router/build/tests/c_unittests/c_unittests+0x4d2668)
817972:     #1 0x8bdff0 in qd_malloc /home/travis/build/skupperproject/skupper-router/include/qpid/dispatch/ctools.h:225:17
818072:     #2 0x8bdff0 in qdr_core_subscribe /home/travis/build/skupperproject/skupper-router/src/router_core/route_tables.c:147:31
818172:     #3 0x7efbc8 in _vflow_init_address_watch_TH /home/travis/build/skupperproject/skupper-router/src/vanflow.c:1531:39
818272:     #4 0x7ef25c in _vflow_thread /home/travis/build/skupperproject/skupper-router/src/vanflow.c:1216:17
818372:     #5 0xffff9ca31620 in start_thread (/lib/aarch64-linux-gnu/libpthread.so.0+0x7620)
818472:     #6 0xffff9bfe0498  (/lib/aarch64-linux-gnu/libc.so.6+0xd1498)
jiridanek commented 1 year ago

Here's it on clang https://github.com/jiridanek/skupper-router/actions/runs/4566236288/jobs/8058456155#step:32:2852

jiridanek commented 1 year ago

https://github.com/skupperproject/skupper-router/actions/runs/5280672516/jobs/9553224150?pr=1131#step:10:1789

jiridanek commented 10 months ago

This looks like the same failure,

73: =================================================================
73: ==3187==ERROR: LeakSanitizer: detected memory leaks
73: 
73: Direct leak of 56 byte(s) in 1 object(s) allocated from:
73:     #0 0x7f5d728defdf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
73:     #1 0x55d73ffe0d85 in qd_malloc ../include/qpid/dispatch/ctools.h:225
73:     #2 0x55d73ffe1b49 in qdr_core_subscribe ../src/router_core/route_tables.c:147
73:     #3 0x55d73ff180c1 in _vflow_init_address_watch_TH ../src/vanflow.c:1686
73:     #4 0x55d73ff144bf in _vflow_thread_TH ../src/vanflow.c:1315
73:     #5 0x55d73fef381e in _thread_init ../src/posix/threading.c:206
73:     #6 0x7f5d70c94b42 in start_thread nptl/pthread_create.c:442
73: 
73: SUMMARY: AddressSanitizer: 56 byte(s) leaked in 1 allocation(s).

https://github.com/skupperproject/skupper-router/actions/runs/6338420921/job/17215601909?pr=1241#step:10:2583

This is from one of those

Error: Process completed with exit code 143.

Ubuntu runs, so it might not be a reliable message.

jiridanek commented 10 months ago

Here's it again, https://github.com/skupperproject/skupper-router/actions/runs/6597463058/job/17925042549?pr=1268#step:10:4621

I will take a look soon, since this is popping up with low frequency, but it is persistent.