You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ export UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=0"
$ make CC=clang CFLAGS="-O2 -fsanitize=undefined -static-libsan -ggdb3" LDFLAGS="-fsanitize=undefined -static-libsan" verbose=yes -j32 -k
[...]
clang -O2 -fsanitize=undefined -static-libsan -ggdb3 -std=gnu99 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_DT_VERSION=\"2.0.1\" -Iuts/common -fsanitize=undefined -static-libsan -o /home/sam/git/dtrace-utils-bad/build/usdt-tst-argmap /home/sam/git/dtrace-utils-bad/build/test-triggers--usdt-tst-argmap.o /home/sam/git/dtrace-utils-bad/build/test-triggers--usdt-tst-argmap-prov.o -L/home/sam/git/dtrace-utils-bad/build
rm -f test/triggers/usdt-tst-argmap
ln -s /home/sam/git/dtrace-utils-bad/build/usdt-tst-argmap test/triggers/usdt-tst-argmap
libdtrace/dt_htab.c:238:18: runtime error: call to function prv_hval through pointer to incorrect function type 'unsigned int (*)(const void *)'
/home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:54:1: note: prv_hval defined here
#0 0x7fc4f086a4ab in dt_htab_delete /home/sam/git/dtrace-utils-bad/libdtrace/dt_htab.c:238:18
#1 0x7fc4f0910dcb in dt_probe_destroy /home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:354:3
#2 0x7fc4f091c81e in dt_probe_fini /home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:1334:3
#3 0x7fc4f08bab46 in dtrace_close /home/sam/git/dtrace-utils-bad/libdtrace/dt_open.c:1313:2
#4 0x55caac25000e in main /home/sam/git/dtrace-utils-bad/cmd/dtrace.c
#5 0x7fc4f0389834 (/usr/lib64/libc.so.6+0x26834)
#6 0x7fc4f03898e7 in __libc_start_main (/usr/lib64/libc.so.6+0x268e7)
#7 0x55caac221ef4 in _start (/home/sam/git/dtrace-utils-bad/build/dtrace+0xcef4)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior libdtrace/dt_htab.c:238:18
libdtrace/dt_htab.c:248:7: runtime error: call to function prv_cmp through pointer to incorrect function type 'int (*)(const void *, const void *)'
/home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:54:1: note: prv_cmp defined here
#0 0x7fc4f086a2cf in dt_htab_delete /home/sam/git/dtrace-utils-bad/libdtrace/dt_htab.c:248:7
#1 0x7fc4f0910dcb in dt_probe_destroy /home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:354:3
#2 0x7fc4f091c81e in dt_probe_fini /home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:1334:3
#3 0x7fc4f08bab46 in dtrace_close /home/sam/git/dtrace-utils-bad/libdtrace/dt_open.c:1313:2
#4 0x55caac25000e in main /home/sam/git/dtrace-utils-bad/cmd/dtrace.c
#5 0x7fc4f0389834 (/usr/lib64/libc.so.6+0x26834)
#6 0x7fc4f03898e7 in __libc_start_main (/usr/lib64/libc.so.6+0x268e7)
#7 0x55caac221ef4 in _start (/home/sam/git/dtrace-utils-bad/build/dtrace+0xcef4)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior libdtrace/dt_htab.c:248:7
libdtrace/dt_htab.c:258:9: runtime error: call to function prv_del through pointer to incorrect function type 'void *(*)(void *, void *)'
/home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:54:1: note: prv_del defined here
#0 0x7fc4f086a81a in dt_htab_delete /home/sam/git/dtrace-utils-bad/libdtrace/dt_htab.c:258:9
#1 0x7fc4f0910dcb in dt_probe_destroy /home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:354:3
#2 0x7fc4f091c81e in dt_probe_fini /home/sam/git/dtrace-utils-bad/libdtrace/dt_probe.c:1334:3
#3 0x7fc4f08bab46 in dtrace_close /home/sam/git/dtrace-utils-bad/libdtrace/dt_open.c:1313:2
#4 0x55caac25000e in main /home/sam/git/dtrace-utils-bad/cmd/dtrace.c
#5 0x7fc4f0389834 (/usr/lib64/libc.so.6+0x26834)
#6 0x7fc4f03898e7 in __libc_start_main (/usr/lib64/libc.so.6+0x268e7)
#7 0x55caac221ef4 in _start (/home/sam/git/dtrace-utils-bad/build/dtrace+0xcef4)
With Clang's UBSAN:
See https://maskray.me/blog/2022-12-18-control-flow-integrity#fsanitizefunction. Note that GCC's UBSAN doesn't yet include this. This is less important than the other sanitizer issues as I don't think CFI is really a priority for DTrace.
The text was updated successfully, but these errors were encountered: