Test failures with AddressSanitizer
Adding b_sanitize=address
(or b_sanitize=address,undefined
) to default_options in meson.build makes some tests fail. I didn't try to run pipewire itself.
--- command ---
17:16:26 SPA_PLUGIN_DIR='/build/pipewire/build/spa/plugins/' /build/pipewire/build/spa/plugins/audioconvert/test-fmt-ops
--- Listing only the last 100 lines from a long log. ---
[removed]
test test_s24_32d_f32d:
=================================================================
==6146==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 80 byte(s) in 1 object(s) allocated from:
#0 0x7ffff76a980e in __interceptor_calloc (/nix/store/7in2alrzhkpcax5fk4823ismvsmdk1aj-gcc-9.3.0-lib/lib/libasan.so.5+0x10a80e)
#1 0x405987 in load_handle.constprop.0 (/build/pipewire/build/spa/plugins/audioconvert/test-fmt-ops+0x405987)
#2 0x40254d in main (/build/pipewire/build/spa/plugins/audioconvert/test-fmt-ops+0x40254d)
#3 0x7ffff73dbdbc in __libc_start_main (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x23dbc)
SUMMARY: AddressSanitizer: 80 byte(s) leaked in 1 allocation(s).
-------
5/21 test-resample FAIL 1.34s (exit status 1)
--- command ---
17:16:26 SPA_PLUGIN_DIR='/build/pipewire/build/spa/plugins/' /build/pipewire/build/spa/plugins/audioconvert/test-resample
--- Listing only the last 100 lines from a long log. ---
[removed]
499: 997 941 1024 1024 996
[D][resample-native.c:385 resample_native_init()] native 0x7fffffff8e00: q:4 in:160 out:147 n_taps:64 n_phases:294 features:00000000:00000000
=================================================================
==6151==ERROR: AddressSanitizer: dynamic-stack-buffer-overflow on address 0x7fffffff8c40 at pc 0x000000402bff bp 0x7fffffff69c0 sp 0x7fffffff69b8
READ of size 4 at 0x7fffffff8c40 thread T0
#0 0x402bfe in do_resample_full_c (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x402bfe)
#1 0x4036e7 in impl_native_process (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x4036e7)
#2 0x4024e8 in pull_blocks.constprop.0 (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x4024e8)
#3 0x4018bc in main (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x4018bc)
#4 0x7ffff729ddbc in __libc_start_main (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x23dbc)
#5 0x401ae9 in _start (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x401ae9)
Address 0x7fffffff8c40 is located in stack of thread T0 at offset 8512 in frame
#0 0x4033df in impl_native_process (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x4033df)
This frame has 2 object(s):
[48, 52) 'in' (line 222)
[64, 68) 'out' (line 222) <== Memory access at offset 8512 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
(longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: dynamic-stack-buffer-overflow (/build/pipewire/build/spa/plugins/audioconvert/test-resample+0x402bfe) in do_resample_full_c
Shadow bytes around the buggy address:
0x10007fff7130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x10007fff7140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x10007fff7150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x10007fff7160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x10007fff7170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x10007fff7180: 00 00 00 00 00 00 00 00[cb]cb cb cb 00 00 00 00
0x10007fff7190: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 04 f2
0x10007fff71a0: 04 f2 00 f2 f2 f2 00 f3 f3 f3 00 00 00 00 00 00
0x10007fff71b0: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
0x10007fff71c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 f2 f2 f2
0x10007fff71d0: f2 f2 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f3
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==6151==ABORTING
-------
12/21 pw-test-protocol-native FAIL 0.08s (exit status 1)
--- command ---
17:16:26 SPA_PLUGIN_DIR='/build/pipewire/build/spa/plugins/' PIPEWIRE_MODULE_DIR='/build/pipewire/build/src/modules/' /build/pipewire/build/src/modules/pw-test-protocol-native
--- stderr ---
=================================================================
==6164==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 8464 byte(s) in 1 object(s) allocated from:
#0 0x7ffff76a980e in __interceptor_calloc (/nix/store/7in2alrzhkpcax5fk4823ismvsmdk1aj-gcc-9.3.0-lib/lib/libasan.so.5+0x10a80e)
#1 0x411bc2 in pw_protocol_native_connection_new (/build/pipewire/build/src/modules/pw-test-protocol-native+0x411bc2)
#2 0x402459 in main (/build/pipewire/build/src/modules/pw-test-protocol-native+0x402459)
#3 0x7ffff714edbc in __libc_start_main (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x23dbc)
Indirect leak of 32768 byte(s) in 1 object(s) allocated from:
#0 0x7ffff76a980e in __interceptor_calloc (/nix/store/7in2alrzhkpcax5fk4823ismvsmdk1aj-gcc-9.3.0-lib/lib/libasan.so.5+0x10a80e)
#1 0x411cf3 in pw_protocol_native_connection_new (/build/pipewire/build/src/modules/pw-test-protocol-native+0x411cf3)
#2 0x402459 in main (/build/pipewire/build/src/modules/pw-test-protocol-native+0x402459)
#3 0x7ffff714edbc in __libc_start_main (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x23dbc)
SUMMARY: AddressSanitizer: 41232 byte(s) leaked in 2 allocation(s).
-------
16/21 pw-test-endpoint FAIL 0.08s (exit status 1)
--- command ---
17:16:26 SPA_PLUGIN_DIR='/build/pipewire/build/spa/plugins/' PIPEWIRE_MODULE_DIR='/build/pipewire/build/src/modules/' /build/pipewire/build/src/tests/pw-test-endpoint
--- stderr ---
[W][000160569.414983][core.c:192 destroy_proxy()] core 0x613000000580: leaked proxy 0x60c000000940 id:2
=================================================================
==6175==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 192 byte(s) in 1 object(s) allocated from:
#0 0x7ffff76a980e in __interceptor_calloc (/nix/store/7in2alrzhkpcax5fk4823ismvsmdk1aj-gcc-9.3.0-lib/lib/libasan.so.5+0x10a80e)
#1 0x7ffff2d55e69 (<unknown module>)
#2 0x7ffff73acbee in core_create_object (/build/pipewire/build/src/tests/../pipewire/libpipewire-0.3.so.0+0x9fbee)
#3 0x7ffff2e37a19 (<unknown module>)
#4 0x7ffff2e10bc0 (<unknown module>)
#5 0x7ffff2e11507 (<unknown module>)
#6 0x7ffff40c773c in loop_iterate (/build/pipewire/build/spa/plugins//support/libspa-support.so+0x1173c)
#7 0x7ffff741dd87 in pw_main_loop_run (/build/pipewire/build/src/tests/../pipewire/libpipewire-0.3.so.0+0x110d87)
#8 0x40deb7 in test_endpoint (/build/pipewire/build/src/tests/pw-test-endpoint+0x40deb7)
#9 0x40243a in main (/build/pipewire/build/src/tests/pw-test-endpoint+0x40243a)
#10 0x7ffff716fdbc in __libc_start_main (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x23dbc)
Direct leak of 120 byte(s) in 1 object(s) allocated from:
#0 0x7ffff76a980e in __interceptor_calloc (/nix/store/7in2alrzhkpcax5fk4823ismvsmdk1aj-gcc-9.3.0-lib/lib/libasan.so.5+0x10a80e)
#1 0x7ffff746f8da in pw_proxy_new (/build/pipewire/build/src/tests/../pipewire/libpipewire-0.3.so.0+0x1628da)
#2 0x7ffff2e57a77 (<unknown module>)
#3 0x40da1e in test_endpoint (/build/pipewire/build/src/tests/pw-test-endpoint+0x40da1e)
#4 0x40243a in main (/build/pipewire/build/src/tests/pw-test-endpoint+0x40243a)
#5 0x7ffff716fdbc in __libc_start_main (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x23dbc)
SUMMARY: AddressSanitizer: 312 byte(s) leaked in 2 allocation(s).
-------
18/21 pw-test-properties FAIL 0.04s (exit status 1)
--- command ---
17:16:26 SPA_PLUGIN_DIR='/build/pipewire/build/spa/plugins/' PIPEWIRE_MODULE_DIR='/build/pipewire/build/src/modules/' /build/pipewire/build/src/tests/pw-test-properties
--- stderr ---
'[ "foo", "bar" ]'
=================================================================
==6182==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 22 byte(s) in 2 object(s) allocated from:
#0 0x7ffff76a9628 in __interceptor_malloc (/nix/store/7in2alrzhkpcax5fk4823ismvsmdk1aj-gcc-9.3.0-lib/lib/libasan.so.5+0x10a628)
#1 0x7ffff71c3b97 in __vasprintf_internal (/nix/store/9l06v7fc38c1x3r2iydl15ksgz0ysb82-glibc-2.32/lib/libc.so.6+0x77b97)
SUMMARY: AddressSanitizer: 22 byte(s) leaked in 2 allocation(s).
-------
Summary of Failures:
4/21 test-fmt-ops FAIL 0.14s (exit status 1)
4/21 test-fmt-ops FAIL 0.14s (exit status 1)
5/21 test-resample FAIL 1.34s (exit status 1)
5/21 test-resample FAIL 1.34s (exit status 1)
12/21 pw-test-protocol-native FAIL 0.08s (exit status 1)
12/21 pw-test-protocol-native FAIL 0.08s (exit status 1)
16/21 pw-test-endpoint FAIL 0.08s (exit status 1)
16/21 pw-test-endpoint FAIL 0.08s (exit status 1)
18/21 pw-test-properties FAIL 0.04s (exit status 1)
18/21 pw-test-properties FAIL 0.04s (exit status 1)