From 2092f8895fad03ee9cefb8a1b14bf4b730dd5ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 24 Jul 2025 11:43:14 +0200 Subject: [PATCH] Fix one-definition-rule violation in the loop unit test Locally, clang reported following odr-violation: ================================================================= ==1132009==ERROR: AddressSanitizer: odr-violation (0x555555589280): [1] size=8 'isc__loopmgr' ../lib/isc/loop.c:52:16 in /home/ondrej/Projects/bind9/build/tests/isc/loop [2] size=8 'isc__loopmgr' ../lib/isc/loop.c:52:16 in /home/ondrej/Projects/bind9/build/tests/isc/../../libisc.so These globals were registered at these points: [1]: #0 0x7ffff785306f in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:350 #1 0x55555556abce in _sub_I_00099_1 (/home/ondrej/Projects/bind9/build/tests/isc/loop+0x16bce) (BuildId: e7c586e966e6986532a3da40df41223ae16e55c9) #2 0x7ffff702a303 in call_init ../csu/libc-start.c:145 #3 0x7ffff702a303 in __libc_start_main_impl ../csu/libc-start.c:347 #4 0x5555555622e4 in _start (/home/ondrej/Projects/bind9/build/tests/isc/loop+0xe2e4) (BuildId: e7c586e966e6986532a3da40df41223ae16e55c9) [2]: #0 0x7ffff785306f in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:350 #1 0x7ffff75335b9 in _sub_I_00099_1 (/home/ondrej/Projects/bind9/build/tests/isc/../../libisc.so+0x1335b9) (BuildId: 33ab72bc676e9ef9111b3db1fc4347595069cd29) #2 0x7ffff7fca71e in call_init elf/dl-init.c:74 #3 0x7ffff7fca823 in call_init elf/dl-init.c:120 #4 0x7ffff7fca823 in _dl_init elf/dl-init.c:121 #5 0x7ffff7fe459f (/lib64/ld-linux-x86-64.so.2+0x1f59f) (BuildId: 281ac1521b4102509b1c7ac7004db7c1efb81796) ==1132009==HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_odr_violation=0 SUMMARY: AddressSanitizer: odr-violation: global 'isc__loopmgr' at ../lib/isc/loop.c:52:16 in /home/ondrej/Projects/bind9/build/tests/isc/loop ==1132009==ABORTING Aborted (core dumped) Rename isc__loopmgr when including the loop.c into loop_test.c to prevent odr-violation over isc__loopmgr. --- tests/isc/loop_test.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/isc/loop_test.c b/tests/isc/loop_test.c index fc2508ba5f..7fb85dd24c 100644 --- a/tests/isc/loop_test.c +++ b/tests/isc/loop_test.c @@ -33,6 +33,11 @@ #include #include +/* + * Prevent the odr-violation by renaming isc__loopmgr when including loop.c for + * the second time. + */ +#define isc__loopmgr isc___loopmgr #include "loop.c" #include