The AudioStreamWav unit test seg faults
Tested versions
Latest version of the master branch hash: f4af8201bac157b9d47e336203d3e8a8ef729de2
System information
Gentoo 2.15 - Wayland - integrated AMD Radeon Graphics (RADV RENOIR) - AMD Ryzen 5 5600U with Radeon Graphics (12 Threads) - pipewire - libpipewire 1.0.7
Issue description
The unit test [Audio][AudioStreamWAV] Save empty file segmentation faults. 3 other of my friends (all of which run linux) also tried running the tests and also got segmentation faults.
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
./tests/scene/test_audio_stream_wav.h:230:
TEST CASE: [Audio][AudioStreamWAV] Save empty file
Stream can be saved as .wav
./tests/scene/test_audio_stream_wav.h:230: FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal
===============================================================================
./tests/scene/test_audio_stream_wav.h:230:
TEST CASE: [Audio][AudioStreamWAV] Save empty file
DEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):
Stream can be saved as .wav
===============================================================================
[doctest] test cases: 8 | 7 passed | 1 failed | 1037 skipped
[doctest] assertions: 131 | 131 passed | 0 failed |
[doctest] Status: FAILURE!
================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.4.dev.custom_build (f4af8201bac157b9d47e336203d3e8a8ef729de2)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3c9d0) [0x7ff5f42ba9d0] (??:0)
[2] ./bin/godot.linuxbsd.editor.x86_64(+0x67260e8) [0x5558fff4f0e8] (??:0)
[3] ./bin/godot.linuxbsd.editor.x86_64(+0x3496a03) [0x5558fccbfa03] (??:0)
[4] ./bin/godot.linuxbsd.editor.x86_64(+0x3497d43) [0x5558fccc0d43] (??:0)
[5] ./bin/godot.linuxbsd.editor.x86_64(+0x2f2bb40) [0x5558fc754b40] (??:0)
[6] ./bin/godot.linuxbsd.editor.x86_64(+0x300039b) [0x5558fc82939b] (??:0)
[7] ./bin/godot.linuxbsd.editor.x86_64(+0x2edbdf0) [0x5558fc704df0] (??:0)
[8] ./bin/godot.linuxbsd.editor.x86_64(+0x2e3c5fa) [0x5558fc6655fa] (??:0)
[9] /lib64/libc.so.6(+0x26350) [0x7ff5f42a4350] (??:0)
[10] /lib64/libc.so.6(__libc_start_main+0x89) [0x7ff5f42a4409] (??:0)
[11] ./bin/godot.linuxbsd.editor.x86_64(+0x2e3c4a5) [0x5558fc6654a5] (??:0)
-- END OF BACKTRACE --
================================================================
[1] 1966 IOT instruction ./bin/godot.linuxbsd.editor.x86_64 --test --test-case="*[AudioStreamWAV]*"
Steps to reproduce
- Pull the repository
- Compile with tests
- Run tests
The exact command I use to compile and run the test: scons linker=mold tests=true vscode=yes && ./bin/godot.linuxbsd.editor.x86_64 --test --test-case="[AudioStreamWAV]"
Minimal reproduction project (MRP)
N/A
I don't understand why it's not detected by the github actions
It seems like building with dev_build=yes doesn't segfault o.0. My guess is that it's because it disables optimizations.
There are tests that are run with sanitizers in GitHub actions, but (at least for the UB sanitizer) don't make the job fail if it detects problems. Should they be treated as errors?
The test doesn't segfault with asan and lsan sanitizers :/
Closed by https://github.com/godotengine/godot/pull/100422