Skip to content

ThreadSanitizer symbol collision on Linux #181

Description

@zsliu98

When building pluginval with ThreadSanitizer on Linux, there is a symbol collision issue.

Seems like I have to:

  1. remove Linux static link against libstdc++: ZL-Audio@911e89a
  2. remove memory allocation override for sanitizer: ZL-Audio@81cefd6

Here is the symbol collision output:

[0/2] Re-checking globbed directories...
[1/35] Generating pluginval_artefacts/JuceLibraryCode/JuceHeader.h
[2/35] Building CXX object CMakeFiles/pluginval.dir/Source/CrashHandler.cpp.o
[3/35] Building CXX object CMakeFiles/pluginval.dir/Source/Main.cpp.o
[4/35] Building CXX object CMakeFiles/pluginval.dir/Source/PluginTests.cpp.o
[5/35] Building CXX object CMakeFiles/pluginval.dir/Source/CommandLine.cpp.o
[6/35] Building CXX object CMakeFiles/pluginval.dir/Source/tests/BasicTests.cpp.o
/home/runner/work/ZLEqualizer/ZLEqualizer/pluginval/Source/tests/BasicTests.cpp:967:54: warning: unused parameter 'level' [-Wunused-parameter]
  967 |     std::vector<TestDescription> getDescription (int level) const override
      |                                                      ^
1 warning generated.
[7/35] Building CXX object CMakeFiles/pluginval.dir/Source/MainComponent.cpp.o
[8/35] Building CXX object CMakeFiles/pluginval.dir/Source/tests/LocaleTest.cpp.o
[9/35] Building CXX object CMakeFiles/pluginval.dir/Source/tests/ParameterFuzzTests.cpp.o
[10/35] Building CXX object CMakeFiles/pluginval.dir/Source/tests/BusTests.cpp.o
[11/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_core/juce_core_CompilationTime.cpp.o
[12/35] Building CXX object CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o
[13/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_basics/juce_audio_basics.cpp.o
[14/35] Building CXX object CMakeFiles/pluginval.dir/Source/Validator.cpp.o
[15/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_events/juce_events.cpp.o
[16/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_devices/juce_audio_devices.cpp.o
[17/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_core/juce_core.cpp.o
[18/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_extra/juce_gui_extra.cpp.o
[19/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_2.cpp.o
[20/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_4.cpp.o
[21/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics.cpp.o
[22/35] Building C object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_graphics/juce_graphics_Sheenbidi.c.o
[23/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors/juce_audio_processors.cpp.o
[24/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_3.cpp.o
[25/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors_headless/juce_audio_processors_headless_ara.cpp.o
[26/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_5.cpp.o
[27/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors_headless/juce_audio_processors_headless_lv2_libs.cpp.o
[28/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_data_structures/juce_data_structures.cpp.o
[29/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_formats/juce_audio_formats.cpp.o
[30/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_utils/juce_audio_utils.cpp.o
[31/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_graphics/juce_graphics.cpp.o
[32/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_graphics/juce_graphics_Harfbuzz.cpp.o
[33/35] Building CXX object CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp.o
[34/35] Linking CXX executable pluginval_artefacts/Debug/pluginval
FAILED: [code=1] pluginval_artefacts/Debug/pluginval 
: && /usr/bin/clang++-21 -g -Xlinker --dependency-file=CMakeFiles/pluginval.dir/link.d CMakeFiles/pluginval.dir/Source/CommandLine.cpp.o CMakeFiles/pluginval.dir/Source/CrashHandler.cpp.o CMakeFiles/pluginval.dir/Source/Main.cpp.o CMakeFiles/pluginval.dir/Source/MainComponent.cpp.o CMakeFiles/pluginval.dir/Source/PluginTests.cpp.o CMakeFiles/pluginval.dir/Source/tests/BasicTests.cpp.o CMakeFiles/pluginval.dir/Source/tests/LocaleTest.cpp.o CMakeFiles/pluginval.dir/Source/tests/BusTests.cpp.o CMakeFiles/pluginval.dir/Source/tests/ParameterFuzzTests.cpp.o CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o CMakeFiles/pluginval.dir/Source/Validator.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_devices/juce_audio_devices.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_basics/juce_audio_basics.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_core/juce_core.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_core/juce_core_CompilationTime.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_events/juce_events.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors/juce_audio_processors.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_extra/juce_gui_extra.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_2.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_3.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_4.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_gui_basics/juce_gui_basics_5.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_graphics/juce_graphics.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_graphics/juce_graphics_Harfbuzz.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_graphics/juce_graphics_Sheenbidi.c.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_data_structures/juce_data_structures.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors_headless/juce_audio_processors_headless_ara.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_processors_headless/juce_audio_processors_headless_lv2_libs.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_utils/juce_audio_utils.cpp.o CMakeFiles/pluginval.dir/_deps/juce-src/modules/juce_audio_formats/juce_audio_formats.cpp.o -o pluginval_artefacts/Debug/pluginval  -fsanitize=thread  -static-libstdc++  /usr/lib/x86_64-linux-gnu/libasound.so  /usr/lib/x86_64-linux-gnu/libfontconfig.so  /usr/lib/x86_64-linux-gnu/libfreetype.so  -lrt  -ldl  -lpthread && :
/usr/bin/ld: CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o: in function `std::__terminate()':
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:431: multiple definition of `operator new(unsigned long)'; /usr/lib/llvm-21/lib/clang/21/lib/linux/libclang_rt.tsan_cxx-x86_64.a(tsan_new_delete.cpp.o):(.text._Znwm+0x0): first defined here
/usr/bin/ld: CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o: in function `operator new[](unsigned long)':
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/future:435: multiple definition of `operator new[](unsigned long)'; /usr/lib/llvm-21/lib/clang/21/lib/linux/libclang_rt.tsan_cxx-x86_64.a(tsan_new_delete.cpp.o):(.text._Znam+0x0): first defined here
/usr/bin/ld: CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o: in function `operator delete(void*)':
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/atomic_base.h:(.text+0x180): multiple definition of `operator delete(void*)'; /usr/lib/llvm-21/lib/clang/21/lib/linux/libclang_rt.tsan_cxx-x86_64.a(tsan_new_delete.cpp.o):(.text._ZdlPv+0x0): first defined here
/usr/bin/ld: CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o: in function `operator delete[](void*)':
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/atomic_base.h:519: multiple definition of `operator delete[](void*)'; /usr/lib/llvm-21/lib/clang/21/lib/linux/libclang_rt.tsan_cxx-x86_64.a(tsan_new_delete.cpp.o):(.text._ZdaPv+0x0): first defined here
/usr/bin/ld: CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o: in function `operator delete(void*, unsigned long)':
/home/runner/work/ZLEqualizer/ZLEqualizer/pluginval/Source/TestUtilities.cpp:108: multiple definition of `operator delete(void*, unsigned long)'; /usr/lib/llvm-21/lib/clang/21/lib/linux/libclang_rt.tsan_cxx-x86_64.a(tsan_new_delete.cpp.o):(.text._ZdlPvm+0x0): first defined here
/usr/bin/ld: CMakeFiles/pluginval.dir/Source/TestUtilities.cpp.o: in function `operator delete[](void*, unsigned long)':
/home/runner/work/ZLEqualizer/ZLEqualizer/pluginval/Source/TestUtilities.cpp:117: multiple definition of `operator delete[](void*, unsigned long)'; /usr/lib/llvm-21/lib/clang/21/lib/linux/libclang_rt.tsan_cxx-x86_64.a(tsan_new_delete.cpp.o):(.text._ZdaPvm+0x0): first defined here
clang++-21: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Error: Process completed with exit code 1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions