Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[C++] Link error when building with TSAN #40863

Closed
zanmato1984 opened this issue Mar 28, 2024 · 1 comment
Closed

[C++] Link error when building with TSAN #40863

zanmato1984 opened this issue Mar 28, 2024 · 1 comment
Assignees
Milestone

Comments

@zanmato1984
Copy link
Collaborator

Describe the bug, including details regarding any error messages, version, and platform.

I'm on Intel Mac using Apple Clang, building arrow with TSAN using the following command:
cmake .. --preset ninja-debug -DARROW_USE_TSAN=ON -DARROW_JEMALLOC=OFF -DARROW_MIMALLOC=OFF

Get link error:

[build] [1/1] Linking CXX shared module debug/libarrow_filesystem_example.so
[build] FAILED: debug/libarrow_filesystem_example.so 
[build] : && /Library/Developer/CommandLineTools/usr/bin/c++ -fno-aligned-new  -Qunused-arguments -fcolor-diagnostics  -Wall -Wextra -Wdocumentation -Wshorten-64-to-32 -Wno-missing-braces -Wno-unused-parameter -Wno-constant-logical-operand -Wno-return-stack-address -Wdate-time -Wno-unknown-warning-option -Wno-pass-failed -msse4.2  -fsanitize-blacklist=/Users/zanmato/dev/arrow/cpp/build-support/sanitizer-disallowed-entries.txt -g -Werror -O0 -ggdb -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -bundle -Wl,-headerpad_max_install_names  -o debug/libarrow_filesystem_example.so src/arrow/testing/CMakeFiles/arrow_filesystem_example.dir/examplefs.cc.o  -Wl,-rpath,/Users/zanmato/dev/arrow/cpp/out/build/scalar-race/debug  debug/libarrow_testing.1600.0.0.dylib  /usr/local/lib/libgmock.a  /usr/local/lib/libgtest_main.a  debug/libarrow.1600.0.0.dylib  /usr/local/lib/libgtest.a && :
[build] ld: Undefined symbols:
[build]   ___tsan_func_entry, referenced from:
[build]       _arrow_filesystem_get_registry in examplefs.cc.o
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:v160006]<std::nullptr_t>(char const*) in examplefs.cc.o
[build]       std::__1::function<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::function<arrow::fs::$_0, void>(arrow::fs::$_0) in examplefs.cc.o
[build]       std::__1::function<void ()>::function[abi:v160006]() in examplefs.cc.o
[build]       std::__1::function<void ()>::~function() in examplefs.cc.o
[build]       std::__1::function<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::~function() in examplefs.cc.o
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:v160006]<std::nullptr_t>(char const*) in examplefs.cc.o
[build]       ...
[build]   ___tsan_func_exit, referenced from:
[build]       _arrow_filesystem_get_registry in examplefs.cc.o
[build]       _arrow_filesystem_get_registry in examplefs.cc.o
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:v160006]<std::nullptr_t>(char const*) in examplefs.cc.o
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:v160006]<std::nullptr_t>(char const*) in examplefs.cc.o
[build]       std::__1::function<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::function<arrow::fs::$_0, void>(arrow::fs::$_0) in examplefs.cc.o
[build]       std::__1::function<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::function<arrow::fs::$_0, void>(arrow::fs::$_0) in examplefs.cc.o
[build]       std::__1::function<void ()>::function[abi:v160006]() in examplefs.cc.o
[build]       ...
[build]   ___tsan_init, referenced from:
[build]       _tsan.module_ctor in examplefs.cc.o
[build]   ___tsan_memcpy, referenced from:
[build]       std::__1::__compressed_pair<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>::__compressed_pair[abi:v160006]<arrow::fs::$_0&&, std::__1::allocator<arrow::fs::$_0>&&>(std::__1::piecewise_construct_t, std::__1::tuple<arrow::fs::$_0&&>, std::__1::tuple<std::__1::allocator<arrow::fs::$_0>&&>) in examplefs.cc.o
[build]       std::__1::__compressed_pair<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>::__compressed_pair[abi:v160006]<arrow::fs::$_0&&, std::__1::allocator<arrow::fs::$_0>&&>(std::__1::piecewise_construct_t, std::__1::tuple<arrow::fs::$_0&&>, std::__1::tuple<std::__1::allocator<arrow::fs::$_0>&&>) in examplefs.cc.o
[build]       std::__1::__compressed_pair_elem<std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>, 1, false>::__compressed_pair_elem[abi:v160006]<std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>, void>(std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>&&) in examplefs.cc.o
[build]       std::__1::__compressed_pair<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>::__compressed_pair[abi:v160006]<arrow::fs::$_0 const&, std::__1::allocator<arrow::fs::$_0>&&>(std::__1::piecewise_construct_t, std::__1::tuple<arrow::fs::$_0 const&>, std::__1::tuple<std::__1::allocator<arrow::fs::$_0>&&>) in examplefs.cc.o
[build]       std::__1::__compressed_pair<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>::__compressed_pair[abi:v160006]<arrow::fs::$_0 const&, std::__1::allocator<arrow::fs::$_0>&&>(std::__1::piecewise_construct_t, std::__1::tuple<arrow::fs::$_0 const&>, std::__1::tuple<std::__1::allocator<arrow::fs::$_0>&&>) in examplefs.cc.o
[build]       std::__1::__compressed_pair<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>::__compressed_pair[abi:v160006]<arrow::fs::$_0 const&, std::__1::allocator<arrow::fs::$_0> const&>(std::__1::piecewise_construct_t, std::__1::tuple<arrow::fs::$_0 const&>, std::__1::tuple<std::__1::allocator<arrow::fs::$_0> const&>) in examplefs.cc.o
[build]       std::__1::__compressed_pair<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>::__compressed_pair[abi:v160006]<arrow::fs::$_0 const&, std::__1::allocator<arrow::fs::$_0> const&>(std::__1::piecewise_construct_t, std::__1::tuple<arrow::fs::$_0 const&>, std::__1::tuple<std::__1::allocator<arrow::fs::$_0> const&>) in examplefs.cc.o
[build]       ...
[build]   ___tsan_memset, referenced from:
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__default_init[abi:v160006]() in examplefs.cc.o
[build]   ___tsan_read1, referenced from:
[build]       testing::AssertionResult::operator bool() const in examplefs.cc.o
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__is_long[abi:v160006]() const in examplefs.cc.o
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__get_short_size[abi:v160006]() const in examplefs.cc.o
[build]   ___tsan_read16, referenced from:
[build]       std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::operator std::__1::basic_string_view<char, std::__1::char_traits<char>>[abi:v160006]() const in examplefs.cc.o
[build]   ___tsan_read8, referenced from:
[build]       std::__1::__tuple_leaf<0ul, arrow::fs::$_0&&, false>::get[abi:v160006]() in examplefs.cc.o
[build]       std::__1::__tuple_leaf<0ul, std::__1::allocator<arrow::fs::$_0>&&, false>::get[abi:v160006]() in examplefs.cc.o
[build]       std::__1::unique_ptr<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>, std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>>::get[abi:v160006]() const in examplefs.cc.o
[build]       std::__1::unique_ptr<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>, std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>>::release[abi:v160006]() in examplefs.cc.o
[build]       std::__1::__compressed_pair_elem<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>*, 0, false>::__compressed_pair_elem[abi:v160006]<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>*&, void>(std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>*&) in examplefs.cc.o
[build]       std::__1::__tuple_leaf<0ul, arrow::fs::$_0 const&, false>::get[abi:v160006]() in examplefs.cc.o
[build]       std::__1::unique_ptr<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>, std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>>::reset[abi:v160006](std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>*) in examplefs.cc.o
[build]       ...
[build]   ___tsan_vptr_read, referenced from:
[build]       std::__1::basic_iostream<char, std::__1::char_traits<char>>::basic_iostream[abi:v160006](std::__1::basic_streambuf<char, std::__1::char_traits<char>>*) in examplefs.cc.o
[build]       std::__1::basic_istream<char, std::__1::char_traits<char>>::basic_istream[abi:v160006](std::__1::basic_streambuf<char, std::__1::char_traits<char>>*) in examplefs.cc.o
[build]       std::__1::basic_istream<char, std::__1::char_traits<char>>::basic_istream[abi:v160006](std::__1::basic_streambuf<char, std::__1::char_traits<char>>*) in examplefs.cc.o
[build]       std::__1::basic_ostream<char, std::__1::char_traits<char>>::basic_ostream[abi:v160006]() in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_stringstream() in examplefs.cc.o
[build]       virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_stringstream() in examplefs.cc.o
[build]       std::__1::default_delete<std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>>::operator()[abi:v160006](std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) const in examplefs.cc.o
[build]       ...
[build]   ___tsan_vptr_update, referenced from:
[build]       std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::__func[abi:v160006](arrow::fs::$_0&&, std::__1::allocator<arrow::fs::$_0>&&) in examplefs.cc.o
[build]       std::__1::__function::__base<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::__base[abi:v160006]() in examplefs.cc.o
[build]       std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::__func[abi:v160006](arrow::fs::$_0 const&, std::__1::allocator<arrow::fs::$_0>&&) in examplefs.cc.o
[build]       std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::__func[abi:v160006](arrow::fs::$_0 const&, std::__1::allocator<arrow::fs::$_0> const&) in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringstream[abi:v160006]() in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringstream[abi:v160006]() in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringstream[abi:v160006]() in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringstream[abi:v160006]() in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringstream[abi:v160006]() in examplefs.cc.o
[build]       std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringstream[abi:v160006]() in examplefs.cc.o
[build]       ...
[build]   ___tsan_write4, referenced from:
[build]       std::__1::basic_ios<char, std::__1::char_traits<char>>::init[abi:v160006](std::__1::basic_streambuf<char, std::__1::char_traits<char>>*) in examplefs.cc.o
[build]       std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_stringbuf[abi:v160006](unsigned int) in examplefs.cc.o
[build]   ___tsan_write8, referenced from:
[build]       std::__1::__function::__value_func<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::__value_func[abi:v160006]<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>(arrow::fs::$_0&&, std::__1::allocator<arrow::fs::$_0> const&) in examplefs.cc.o
[build]       std::__1::__function::__value_func<arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>::__value_func[abi:v160006]<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>>(arrow::fs::$_0&&, std::__1::allocator<arrow::fs::$_0> const&) in examplefs.cc.o
[build]       std::__1::__tuple_leaf<0ul, arrow::fs::$_0&&, false>::__tuple_leaf[abi:v160006]<arrow::fs::$_0, void>(arrow::fs::$_0&&) in examplefs.cc.o
[build]       std::__1::__tuple_leaf<0ul, std::__1::allocator<arrow::fs::$_0>&&, false>::__tuple_leaf[abi:v160006]<std::__1::allocator<arrow::fs::$_0>, void>(std::__1::allocator<arrow::fs::$_0>&&) in examplefs.cc.o
[build]       std::__1::unique_ptr<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>, std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>>::release[abi:v160006]() in examplefs.cc.o
[build]       std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>::__allocator_destructor[abi:v160006](std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>&, unsigned long) in examplefs.cc.o
[build]       std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>>::__allocator_destructor[abi:v160006](std::__1::allocator<std::__1::__function::__func<arrow::fs::$_0, std::__1::allocator<arrow::fs::$_0>, arrow::Result<std::__1::shared_ptr<arrow::fs::FileSystem>> (arrow::util::Uri const&, arrow::io::IOContext const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)>>&, unsigned long) in examplefs.cc.o
[build]       ...
[build] clang: error: linker command failed with exit code 1 (use -v to see invocation)

Component(s)

C++

pitrou pushed a commit that referenced this issue Mar 28, 2024
### Rationale for this change

Module library `arrow_filesystem_example` is introduced in #39067 for filesystem testing:
https://github.com/apache/arrow/blob/6cecbab5172b2b339277dde741bfff455646eb32/cpp/src/arrow/testing/CMakeLists.txt#L25

However when built with TSAN, linker flags such as `-fsanitize=thread` is not set, causing the link error in #40863.

### What changes are included in this PR?

Add necessary linker flags for module library.

### Are these changes tested?

Manually tested.

### Are there any user-facing changes?

None.

* GitHub Issue: #40863

Authored-by: Ruoxi Sun <zanmato1984@gmail.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
@pitrou pitrou added this to the 16.0.0 milestone Mar 28, 2024
@pitrou
Copy link
Member

pitrou commented Mar 28, 2024

Issue resolved by pull request 40864
#40864

@pitrou pitrou closed this as completed Mar 28, 2024
tolleybot pushed a commit to tmct/arrow that referenced this issue May 2, 2024
…40864)

### Rationale for this change

Module library `arrow_filesystem_example` is introduced in apache#39067 for filesystem testing:
https://github.com/apache/arrow/blob/6cecbab5172b2b339277dde741bfff455646eb32/cpp/src/arrow/testing/CMakeLists.txt#L25

However when built with TSAN, linker flags such as `-fsanitize=thread` is not set, causing the link error in apache#40863.

### What changes are included in this PR?

Add necessary linker flags for module library.

### Are these changes tested?

Manually tested.

### Are there any user-facing changes?

None.

* GitHub Issue: apache#40863

Authored-by: Ruoxi Sun <zanmato1984@gmail.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
vibhatha pushed a commit to vibhatha/arrow that referenced this issue May 25, 2024
…40864)

### Rationale for this change

Module library `arrow_filesystem_example` is introduced in apache#39067 for filesystem testing:
https://github.com/apache/arrow/blob/6cecbab5172b2b339277dde741bfff455646eb32/cpp/src/arrow/testing/CMakeLists.txt#L25

However when built with TSAN, linker flags such as `-fsanitize=thread` is not set, causing the link error in apache#40863.

### What changes are included in this PR?

Add necessary linker flags for module library.

### Are these changes tested?

Manually tested.

### Are there any user-facing changes?

None.

* GitHub Issue: apache#40863

Authored-by: Ruoxi Sun <zanmato1984@gmail.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants