diff --git a/source/ports/node_port/CMakeLists.txt b/source/ports/node_port/CMakeLists.txt index 7178d5664..4dd8f1653 100644 --- a/source/ports/node_port/CMakeLists.txt +++ b/source/ports/node_port/CMakeLists.txt @@ -91,6 +91,28 @@ set(node_port_test "${target}_test") # Define test # +if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with thread sanitizer: + # + # WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=13328) + # #0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:706 (libtsan.so.2+0x47e82) + # #1 _IO_setb (libc.so.6+0x818a4) + # #2 (libruby-2.7.so.2.7+0x237b64) + # #3 simple_netcore_create /usr/local/metacall/source/loaders/cs_loader/source/simple_netcore.cpp:42 (libcs_loaderd.so+0x108de) + # #4 cs_loader_impl_initialize /usr/local/metacall/source/loaders/cs_loader/source/cs_loader_impl.c:236 (libcs_loaderd.so+0xf5fe) + # #5 loader_impl_initialize /usr/local/metacall/source/loader/source/loader_impl.c:367 (libmetacalld.so+0x306a3) + # #6 loader_impl_load_from_file /usr/local/metacall/source/loader/source/loader_impl.c:822 (libmetacalld.so+0x308b8) + # #7 loader_load_from_file /usr/local/metacall/source/loader/source/loader.c:307 (libmetacalld.so+0x2e101) + # #8 metacall_load_from_file /usr/local/metacall/source/metacall/source/metacall.c:348 (libmetacalld.so+0x32bef) + # #9 node_loader_port_load_from_file_export(napi_env__*, napi_callback_info__*) /usr/local/metacall/source/loaders/node_loader/source/node_loader_port.cpp:395 (libnode_loaderd.so+0x113c5) + # #10 (libnode.so.72+0x7b6344) + # + # SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal (/lib/x86_64-linux-gnu/libc.so.6+0x818a4) in _IO_setb + # + # For solving this, we should enable C# support for sanitizers and debug it properly + return() +endif() + if(WIN32) set(TEST_COMMAND cmd /c) set(GREP_COMMAND findstr) diff --git a/source/tests/metacall_distributable_test/CMakeLists.txt b/source/tests/metacall_distributable_test/CMakeLists.txt index ccfab86d5..9ad87dce5 100644 --- a/source/tests/metacall_distributable_test/CMakeLists.txt +++ b/source/tests/metacall_distributable_test/CMakeLists.txt @@ -122,6 +122,29 @@ target_link_libraries(${target} # Define test # +if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with thread sanitizer (this happens when C# loader is enabled): + # + # WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=13717) + # #0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:647 (libtsan.so.2+0x3ebb8) + # #1 (ld-linux-x86-64.so.2+0x28df) + # #2 (libruby-2.7.so.2.7+0x237879) + # #3 simple_netcore_create /usr/local/metacall/source/loaders/cs_loader/source/simple_netcore.cpp:42 (libcs_loaderd.so+0x108de) + # #4 cs_loader_impl_initialize /usr/local/metacall/source/loaders/cs_loader/source/cs_loader_impl.c:236 (libcs_loaderd.so+0xf5fe) + # #5 loader_impl_initialize /usr/local/metacall/source/loader/source/loader_impl.c:367 (libmetacalld.so+0x306a3) + # #6 loader_impl_load_from_file /usr/local/metacall/source/loader/source/loader_impl.c:822 (libmetacalld.so+0x308b8) + # #7 loader_load_from_file /usr/local/metacall/source/loader/source/loader.c:307 (libmetacalld.so+0x2e101) + # #8 metacall_load_from_file /usr/local/metacall/source/metacall/source/metacall.c:348 (libmetacalld.so+0x32bef) + # #9 metacall_distributable_test_DefaultConstructor_Test::TestBody() /usr/local/metacall/source/tests/metacall_distributable_test/source/metacall_distributable_test.cpp:262 (metacall-distributable-testd+0x23e3d) + # #10 void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (metacall-distributable-testd+0x58686) + # #11 (libc.so.6+0x29209) + # + # SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal (/lib64/ld-linux-x86-64.so.2+0x28df) + # + # For solving this, we should enable C# support for sanitizers and debug it properly + return() +endif() + add_test(NAME ${target} COMMAND $ ) diff --git a/source/tests/metacall_inspect_test/CMakeLists.txt b/source/tests/metacall_inspect_test/CMakeLists.txt index 4894346fc..755775527 100644 --- a/source/tests/metacall_inspect_test/CMakeLists.txt +++ b/source/tests/metacall_inspect_test/CMakeLists.txt @@ -122,6 +122,29 @@ target_link_libraries(${target} # Define test # +if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with thread sanitizer (this happens when C# loader is enabled): + # + # WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=13749) + # #0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:647 (libtsan.so.2+0x3ebb8) + # #1 (ld-linux-x86-64.so.2+0x28df) + # #2 (libruby-2.7.so.2.7+0x237879) + # #3 simple_netcore_create /usr/local/metacall/source/loaders/cs_loader/source/simple_netcore.cpp:42 (libcs_loaderd.so+0x108de) + # #4 cs_loader_impl_initialize /usr/local/metacall/source/loaders/cs_loader/source/cs_loader_impl.c:236 (libcs_loaderd.so+0xf5fe) + # #5 loader_impl_initialize /usr/local/metacall/source/loader/source/loader_impl.c:367 (libmetacalld.so+0x306a3) + # #6 loader_impl_load_from_file /usr/local/metacall/source/loader/source/loader_impl.c:822 (libmetacalld.so+0x308b8) + # #7 loader_load_from_file /usr/local/metacall/source/loader/source/loader.c:307 (libmetacalld.so+0x2e101) + # #8 metacall_load_from_file /usr/local/metacall/source/metacall/source/metacall.c:348 (libmetacalld.so+0x32bef) + # #9 metacall_inspect_test_DefaultConstructor_Test::TestBody() /usr/local/metacall/source/tests/metacall_inspect_test/source/metacall_inspect_test.cpp:101 (metacall-inspect-testd+0x20eaa) + # #10 void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (metacall-inspect-testd+0x54156) + # #11 (libc.so.6+0x29209) + # + # SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal (/lib64/ld-linux-x86-64.so.2+0x28df) + # + # For solving this, we should enable C# support for sanitizers and debug it properly + return() +endif() + add_test(NAME ${target} COMMAND $ ) diff --git a/source/tests/metacall_node_port_test/CMakeLists.txt b/source/tests/metacall_node_port_test/CMakeLists.txt index 58c86cea1..80a792f5e 100644 --- a/source/tests/metacall_node_port_test/CMakeLists.txt +++ b/source/tests/metacall_node_port_test/CMakeLists.txt @@ -122,6 +122,28 @@ target_link_libraries(${target} # Define test # +if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with thread sanitizer (this happens when C# loader is enabled): + # + # WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=13603) + # #0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:647 (libtsan.so.2+0x3ebb8) + # #1 (ld-linux-x86-64.so.2+0x28df) + # #2 (libruby-2.7.so.2.7+0x237879) + # #3 simple_netcore_create /usr/local/metacall/source/loaders/cs_loader/source/simple_netcore.cpp:42 (libcs_loaderd.so+0x108de) + # #4 cs_loader_impl_initialize /usr/local/metacall/source/loaders/cs_loader/source/cs_loader_impl.c:236 (libcs_loaderd.so+0xf5fe) + # #5 loader_impl_initialize /usr/local/metacall/source/loader/source/loader_impl.c:367 (libmetacalld.so+0x306a3) + # #6 loader_impl_load_from_file /usr/local/metacall/source/loader/source/loader_impl.c:822 (libmetacalld.so+0x308b8) + # #7 loader_load_from_file /usr/local/metacall/source/loader/source/loader.c:307 (libmetacalld.so+0x2e101) + # #8 metacall_load_from_file /usr/local/metacall/source/metacall/source/metacall.c:348 (libmetacalld.so+0x32bef) + # #9 node_loader_port_load_from_file_export(napi_env__*, napi_callback_info__*) /usr/local/metacall/source/loaders/node_loader/source/node_loader_port.cpp:395 (libnode_loaderd.so+0x113c5) + # #10 (libnode.so.72+0x7b6344) + # + # SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal (/lib64/ld-linux-x86-64.so.2+0x28df) + # + # For solving this, we should enable C# support for sanitizers and debug it properly + return() +endif() + add_test(NAME ${target} COMMAND $ ) diff --git a/source/tests/metacall_python_port_import_test/CMakeLists.txt b/source/tests/metacall_python_port_import_test/CMakeLists.txt index 49337e91a..68b706515 100644 --- a/source/tests/metacall_python_port_import_test/CMakeLists.txt +++ b/source/tests/metacall_python_port_import_test/CMakeLists.txt @@ -122,6 +122,42 @@ target_link_libraries(${target} # Define test # +if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with thread sanitizer (this happens when C# loader is enabled): + # + # WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=13823) + # #0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:706 (libtsan.so.2+0x47e82) + # #1 (libdw.so.1+0x56c62) + # #2 backward::TraceResolverImpl::~TraceResolverImpl() /usr/local/metacall/build/_deps/backwardcpp-src/backward.hpp:3479 (libbacktrace_plugind.so+0xf95c) + # #3 backward::TraceResolver::~TraceResolver() /usr/local/metacall/build/_deps/backwardcpp-src/backward.hpp:3694 (libbacktrace_plugind.so+0xf95c) + # #4 backward::Printer::~Printer() /usr/local/metacall/build/_deps/backwardcpp-src/backward.hpp:3986 (libbacktrace_plugind.so+0xf95c) + # #5 backward::SignalHandling::handleSignal(int, siginfo_t*, void*) /usr/local/metacall/build/_deps/backwardcpp-src/backward.hpp:4265 (libbacktrace_plugind.so+0xf95c) + # #6 backward::SignalHandling::sig_handler(int, siginfo_t*, void*) /usr/local/metacall/build/_deps/backwardcpp-src/backward.hpp:4276 (libbacktrace_plugind.so+0xfff0) + # #7 (libcoreclr.so+0x4afbdc) + # #8 backward::SignalHandling::sig_handler(int, siginfo_t*, void*) /usr/local/metacall/build/_deps/backwardcpp-src/backward.hpp:4279 (libbacktrace_plugind.so+0xffff) + # #9 (libcoreclr.so+0x4afbdc) + # #10 simple_netcore_create /usr/local/metacall/source/loaders/cs_loader/source/simple_netcore.cpp:42 (libcs_loaderd.so+0x108de) + # #11 cs_loader_impl_initialize /usr/local/metacall/source/loaders/cs_loader/source/cs_loader_impl.c:236 (libcs_loaderd.so+0xf5fe) + # #12 loader_impl_initialize /usr/local/metacall/source/loader/source/loader_impl.c:367 (libmetacalld.so+0x306a3) + # #13 loader_impl_load_from_file /usr/local/metacall/source/loader/source/loader_impl.c:822 (libmetacalld.so+0x308b8) + # #14 loader_load_from_file /usr/local/metacall/source/loader/source/loader.c:307 (libmetacalld.so+0x2e101) + # #15 metacall_load_from_file /usr/local/metacall/source/metacall/source/metacall.c:348 (libmetacalld.so+0x32bef) + # #16 py_loader_port_load_from_file_impl /usr/local/metacall/source/loaders/py_loader/source/py_loader_port.c:190 (libpy_loaderd.so+0x10a02) + # #17 py_loader_port_load_from_file_export /usr/local/metacall/source/loaders/py_loader/source/py_loader_port.c:244 (libpy_loaderd.so+0x10d34) + # #18 (libpython3.9.so.1.0+0x10cc73) + # #19 loader_impl_load_from_memory /usr/local/metacall/source/loader/source/loader_impl.c:968 (libmetacalld.so+0x30eba) + # #20 loader_load_from_memory /usr/local/metacall/source/loader/source/loader.c:327 (libmetacalld.so+0x2e201) + # #21 metacall_load_from_memory /usr/local/metacall/source/metacall/source/metacall.c:357 (libmetacalld.so+0x32c30) + # #22 metacall_python_port_import_test_DefaultConstructor_Test::TestBody() /usr/local/metacall/source/tests/metacall_python_port_import_test/source/metacall_python_port_import_test.cpp:48 (metacall-python-port-import-testd+0x20aa5) + # #23 void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) (metacall-python-port-import-testd+0x4e186) + # #24 (libc.so.6+0x29209) + # + # SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal (/usr/lib/x86_64-linux-gnu/libdw.so.1+0x56c62) + # + # For solving this, we should enable C# support for sanitizers and debug it properly + return() +endif() + add_test(NAME ${target} COMMAND $ WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/ramda diff --git a/source/tests/metacall_test/CMakeLists.txt b/source/tests/metacall_test/CMakeLists.txt index e60a97176..c97ce10d5 100644 --- a/source/tests/metacall_test/CMakeLists.txt +++ b/source/tests/metacall_test/CMakeLists.txt @@ -114,6 +114,27 @@ target_link_libraries(${target} # Define test # +if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with thread sanitizer (this happens when C# loader is enabled): + # + # WARNING: ThreadSanitizer: data race (pid=13427) + # Write of size 8 at 0x7b5c00010680 by thread T8: + # #0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:706 (libtsan.so.2+0x47e82) + # #1 (libcoreclr.so+0x36ba88) + # + # Previous write of size 8 at 0x7b5c00010680 by main thread: + # [failed to restore the stack] + # + # Thread T8 '.NET ThreadPool' (tid=13563, running) created by thread T7 at: + # #0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1001 (libtsan.so.2+0x5e686) + # #1 (libcoreclr.so+0x4e90ce) + # + # SUMMARY: ThreadSanitizer: data race (/usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.17/libcoreclr.so+0x36ba88) + # + # For solving this, we should enable C# support for sanitizers and debug it properly + return() +endif() + add_test(NAME ${target} COMMAND $ ) @@ -142,31 +163,14 @@ set_property(TEST ${target} PROPERTY LABELS ${target} MEMCHECK_IGNORE ) -if((OPTION_BUILD_SANITIZER OR OPTION_BUILD_SANITIZER) AND OPTION_BUILD_LOADERS_CS) - # TODO: This test fails when run with sanitizers (this happens when C# loader is enabled): +if(OPTION_BUILD_SANITIZER AND OPTION_BUILD_LOADERS_CS) + # TODO: This test fails when run with sanitizer (this happens when C# loader is enabled): # - # Sanitizer: # Tracer caught signal 11: addr=0x600000690 pc=0x7f3a7b6710f0 sp=0x7f3a75e32d10 # LeakSanitizer has encountered a fatal error. # HINT: For debugging, try setting environment variable LSAN_OPTIONS=verbosity=1:log_threads=1 # HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc) # - # Thread Sanitizer: - # WARNING: ThreadSanitizer: data race (pid=13427) - # Write of size 8 at 0x7b5c00010680 by thread T8: - # #0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:706 (libtsan.so.2+0x47e82) - # #1 (libcoreclr.so+0x36ba88) - # - # Previous write of size 8 at 0x7b5c00010680 by main thread: - # [failed to restore the stack] - # - # Thread T8 '.NET ThreadPool' (tid=13563, running) created by thread T7 at: - # #0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1001 (libtsan.so.2+0x5e686) - # #1 (libcoreclr.so+0x4e90ce) - # - # SUMMARY: ThreadSanitizer: data race (/usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.17/libcoreclr.so+0x36ba88) - # - # # For solving this, we should enable C# support for sanitizers and debug it properly set_tests_properties(${target} PROPERTIES PASS_REGULAR_EXPRESSION "[ PASSED ]" diff --git a/source/tests/sanitizer/tsan.supp b/source/tests/sanitizer/tsan.supp index d0fbbde96..0219c8e1e 100644 --- a/source/tests/sanitizer/tsan.supp +++ b/source/tests/sanitizer/tsan.supp @@ -26,6 +26,16 @@ called_from_lib:libcoreclr* called_from_lib:libclrjit* # +# Java +# +called_from_lib:libjvm* +# +# WASM (TODO: This must be reviewed, probably it's a false positive) +# +called_from_lib:libwasmtime* +# # Rust # -called_from_lib:libLLVM* \ No newline at end of file +called_from_lib:libLLVM* +called_from_lib:librustc_driver-* +called_from_lib:libstd-* \ No newline at end of file