Open robinchrist opened 2 months ago
Same result when cooking fmt and upgrading to 10.2.1
robin@WS-DA-7773X:/data/dev/Kataklysmos/build$ ninja
[3/3] Linking CXX executable my_app
FAILED: my_app
: && /usr/bin/c++ -O3 -DNDEBUG CMakeFiles/my_app.dir/src/main.cpp.o -o my_app /data/dev/Kataklysmos/external/seastar/build/release/libseastar.a /usr/lib/x86_64-linux-gnu/libboost_program_options.so /usr/lib/x86_64-linux-gnu/libboost_thread.so /usr/lib/x86_64-linux-gnu/libboost_chrono.so /usr/lib/x86_64-linux-gnu/libboost_date_time.so /usr/lib/x86_64-linux-gnu/libboost_atomic.so /usr/lib/x86_64-linux-gnu/libcares.so /data/dev/Kataklysmos/external/seastar/build/release/_cooking/installed/lib/libfmt.a /usr/lib/x86_64-linux-gnu/liblz4.so -ldl /usr/lib/x86_64-linux-gnu/libgnutls.so -latomic /usr/lib/x86_64-linux-gnu/libsctp.so /usr/lib/x86_64-linux-gnu/libprotobuf.so /usr/lib/x86_64-linux-gnu/libyaml-cpp.so /usr/lib/x86_64-linux-gnu/libhwloc.so /usr/lib/x86_64-linux-gnu/liburing.so /usr/lib/x86_64-linux-gnu/libnuma.so && :
/usr/bin/ld: CMakeFiles/my_app.dir/src/main.cpp.o: in function `std::_Function_handler<seastar::future<void> (), main::{lambda()#1}>::_M_invoke(std::_Any_data const&) [clone .cold]':
main.cpp:(.text.unlikely+0x40): undefined reference to `seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, seastar::internal::source_location)'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Seems to be somehow related to boost?
./configure.py --mode=release --cook fmt --cook Boost --cook valgrind --c++-standard=20 --enable-dpdk
Works at least (with the Valgrind fix).
I haven't had the nerve to test whether removing --cook Boost
will fix the issue...
@robinchrist hi Robin, so there are two issues here:
undefined reference to
seastar::logger::failed_to_log()` with GCCcall to consteval function 'seastar::logger::format_info<>::format_info<char[13], 0>' is not a constant express
with Clangmay i learn the version of GCC and the version of Clang which you are using? have you tried to build both you application and Seastar with Clang?
the first issue is a mysterious to me. because this symbol should be included in libseastar.a
, could you paste the output of
$ nm -C build/release/libseastar.a | grep failed_to_log
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
0000000000001200 T seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
0000000000003e50 t seastar::logger::lambda_log_writer<seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)::$_0>::operator()(seastar::internal::log_buf::inserter_iterator)
0000000000003e20 t seastar::logger::lambda_log_writer<seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)::$_0>::~lambda_log_writer()
00000000000012a0 t seastar::logger::lambda_log_writer<seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)::$_0>::~lambda_log_writer()
00000000000000a0 d typeinfo for seastar::logger::lambda_log_writer<seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)::$_0>
0000000000000079 r typeinfo name for seastar::logger::lambda_log_writer<seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)::$_0>
0000000000000078 d vtable for seastar::logger::lambda_log_writer<seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)::$_0>
U seastar::logger::failed_to_log(std::__exception_ptr::exception_ptr, fmt::v10::basic_string_view<char>, std::source_location)
It seems like this was related to C++17?
I can't reproduce it anymore after updating Seastar (because of https://github.com/scylladb/seastar/issues/2180)
What is working:
What is NOT working:
Seem like Clang 16 has some issues with C++23.
see https://github.com/scylladb/seastar/blob/master/doc/compatibility.md#compilers . we don't support Clang 16.
we don't support Clang 16.
Yeah that's not a problem. The results I posted above were merely findings with the stuff that is currently on my dev machine and as a reference for others who might run into the same issue, not a "bug report" that Clang 16 is not working :smile:
When building a very simple test application
I get the following linker error:
Seastar was configured with
with the Valgrind fix from https://github.com/scylladb/seastar/issues/2180 Tested https://github.com/scylladb/seastar/commit/b74a027c819ee5b9bfcee4f32edf8f37017bba12 and https://github.com/scylladb/seastar/commit/cd8a9133d2c02f63dbd578d882cf7333a427e194
With Clang (Seastar itself build with default GCC) I get the error: