timeplus-io / proton

A stream processing engine and database, and a fast and lightweight alternative to ksqlDB and Apache Flink, 🚀 powered by ClickHouse
https://timeplus.com
Apache License 2.0
1.58k stars 69 forks source link

Build fails in WSL (Ubuntu 22.04) using clang18 #849

Open what-is-me opened 3 weeks ago

what-is-me commented 3 weeks ago

What's Wrong I have recently tried to clean build proton with clang18 in WSL (Ubuntu 22.04), but it reports error: 'switch' missing 'default' label [-Werror,-Wswitch-default] in base/base/StringRef.h:155:5. cmake args are copied from build.sh

cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ \
-DENABLE_PROTON_ALL=OFF -DENABLE_PROTON_SERVER=ON -DENABLE_PROTON_CLIENT=ON \
-DENABLE_PROTON_KLOG_BENCHMARK=ON -DENABLE_PROTON_INSTALL=ON -DENABLE_PROTON_METASTORE=ON \
-DUSE_DEBUG_HELPERS=ON -DENABLE_LIBRARIES=OFF -DENABLE_BENCHMARKS=ON -DENABLE_KAFKA=ON \
-DENABLE_NURAFT=ON -DENABLE_RAPIDJSON=ON -DENABLE_YAML_CPP=ON -DENABLE_SIMDJSON=ON \
-DENABLE_ROCKSDB=ON -DENABLE_JEMALLOC=OFF -DENABLE_SSL=ON -DENABLE_BZIP2=ON -DENABLE_BROTLI=ON \
-DENABLE_PROTOBUF=ON -DENABLE_LIBURING=ON -DENABLE_UTILS=ON -DENABLE_THINLTO=OFF \
-DENABLE_CLANG_TIDY=OFF -DENABLE_TESTS=ON -DENABLE_EXAMPLES=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DENABLE_CCACHE=ON -DENABLE_CHECK_HEAVY_BUILDS=1 -DENABLE_GRPC=ON -DENABLE_MATH_FUNCS=ON \
-DENABLE_GEO_FUNCS=ON -DENABLE_HIGH_ORDER_ARRAY_FUNCS=ON -DENABLE_PARQUET=ON -DENABLE_THRIFT=ON \
-DENABLE_CYRUS_SASL=ON -DENABLE_KRB5=ON -DSANITIZE=address -DENABLE_BITMAP_FUNCS=ON \
-DENABLE_BINARY_REPR_FUNCS=ON -DENABLE_IP_CODING_FUNCS=ON -DENABLE_UUID_CODING_FUNCS=ON \
-DENABLE_EXTERNAL_DICT_FUNCS=OFF -DENABLE_FORMATTING_FUNCS=ON -DENABLE_HASH_FUNCS=ON \
-DENABLE_HIGH_ORDER_ARRAY_FUNCS=ON -DENABLE_MISC_FUNCS=ON -DENABLE_MATH_FUNCS=ON \
-DENABLE_GEO_FUNCS=ON -DENABLE_H3_GEO_FUNCS=ON -DENABLE_S2_GEO_FUNCS=ON \
-DENABLE_INTROSPECTION_FUNCS=ON -DUSE_CONSISTENT_HASH_FUNCS=ON -DENABLE_HAMMING_DISTANCE_FUNCS=ON \
-DENABLE_SNOWFLAKE_FUNCS=ON -DENABLE_ENCRYPT_DECRYPT_FUNCS=ON -DENABLE_DEBUG_FUNCS=ON \
-DENABLE_URL_FUNCS=ON -DENABLE_AVRO=ON \
--no-warn-unused-cli -S/home/what-is-me/develop/proton -B/home/what-is-me/develop/proton/build -G Ninja
what-is-me commented 3 weeks ago

I want to know if this is because the higher version of clang, or there are something wrong in my comfiguration.

yokofly commented 3 weeks ago

edit v1: This is already on the roadmap, so if you don't have time to do it, I will pick it up later. Hi, Leo @what-is-me :) At present, this codebase does not support the clang-18 build. We are still using clang-17. https://github.com/timeplus-io/proton/blob/8e6b79732115d34d1afe25c8ea1447642b28599a/BUILD.md

The warning you encountered is due to a new compiler check introduced in clang-18.

do you have time to contribute? To enable clang-18, we need to address the compiler warning and update the version in the CI workflow. This is already on the roadmap, so if you don't have time to do it, I will pick it up later.

steps to resolve the compiler warning: 0. build with `cmake ..` to enable as much as we can. 1. in https://github.com/timeplus-io/proton/blob/8e6b79732115d34d1afe25c8ea1447642b28599a/cmake/warnings.cmake: ```diff no_warning(weak-vtables) no_warning(thread-safety-negative) # experimental flag, too many false positives no_warning(enum-constexpr-conversion) # breaks magic-enum library in clang-16 no_warning(unsafe-buffer-usage) # too aggressive ++ no_warning(switch-default) # conflicts with "defaults in a switch covering all enum values" # TODO Enable conversion, sign-conversion, double-promotion warnings. endif () ``` This is a CMake trick to disable warnings. but, some warnings can be useful. 2. for other warnings, we probably need to consider fixing them. 3. for the git contrib submodule, usually there is no need to change, probably only this one needs to switch ```diff [submodule "contrib/datasketches-cpp"] path = contrib/datasketches-cpp -- url = https://github.com/ClickHouse-Extras/datasketches-cpp.git ++ url = https://github.com/apache/datasketches-cpp.git ``` 4. CI action/workflow related, change the clang-17 related to clang-18, I can work on this.
what-is-me commented 3 weeks ago

After adding no_warning(switch-default), it reports another error:

[build] In file included from /home/what-is-me/develop/proton/base/poco/Data/src/SessionPool.cpp:15:
[build] In file included from /home/what-is-me/develop/proton/base/poco/Data/include/Poco/Data/SessionPool.h:25:
[build] In file included from /home/what-is-me/develop/proton/base/poco/Foundation/include/Poco/HashMap.h:22:
[build] /home/what-is-me/develop/proton/base/poco/Foundation/include/Poco/LinearHashTable.h:70:35: error: 'iterator<std::forward_iterator_tag, Poco::HashMapEntry<std::string, bool>>' is deprecated [-Werror,-Wdeprecated-declarations]
[build]    70 |         class ConstIterator: public std::iterator<std::forward_iterator_tag, Value>
[build]       |                                          ^
[build] /home/what-is-me/develop/proton/base/poco/Foundation/include/Poco/LinearHashTable.h:171:25: note: in instantiation of member class 'Poco::LinearHashTable<Poco::HashMapEntry<std::string, bool>, Poco::HashMapEntryHash<Poco::HashMapEntry<std::string, bool>, Poco::Hash<std::string>>>::ConstIterator' requested here
[build]   171 |         class Iterator: public ConstIterator
[build]       |                                ^
[build] /home/what-is-me/develop/proton/contrib/llvm-project/libcxx/include/__utility/pair.h:48:9: note: in instantiation of member class 'Poco::LinearHashTable<Poco::HashMapEntry<std::string, bool>, Poco::HashMapEntryHash<Poco::HashMapEntry<std::string, bool>, Poco::Hash<std::string>>>::Iterator' requested here
[build]    48 |     _T1 first;
[build]       |         ^
[build] /home/what-is-me/develop/proton/base/poco/Data/src/SessionPool.cpp:172:14: note: in instantiation of template class 'std::pair<Poco::LinearHashTable<Poco::HashMapEntry<std::string, bool>, Poco::HashMapEntryHash<Poco::HashMapEntry<std::string, bool>, Poco::Hash<std::string>>>::Iterator, bool>' requested here
[build]   172 |         _featureMap.insert(FeatureMap::ValueType(name, state));
[build]       |                     ^
[build] /home/what-is-me/develop/proton/contrib/llvm-project/libcxx/include/__iterator/iterator.h:24:29: note: 'iterator<std::forward_iterator_tag, Poco::HashMapEntry<std::string, bool>>' has been explicitly marked deprecated here
[build]    24 | struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator
[build]       |                             ^
[build] /home/what-is-me/develop/proton/contrib/llvm-project/libcxx/include/__config:812:41: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
[build]   812 | #    define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
[build]       |                                         ^
[build] /home/what-is-me/develop/proton/contrib/llvm-project/libcxx/include/__config:785:49: note: expanded from macro '_LIBCPP_DEPRECATED'
[build]   785 | #      define _LIBCPP_DEPRECATED __attribute__((deprecated))
[build]       |

So, no_warning(deprecated-declarations) also should be added.

yokofly commented 3 weeks ago

let's add together

what-is-me commented 3 weeks ago
[build] In file included from /home/what-is-me/develop/proton/programs/klog/klog.cpp:7:
[build] In file included from /home/what-is-me/develop/proton/src/KafkaLog/KafkaWAL.h:5:
[build] /home/what-is-me/develop/proton/src/KafkaLog/KafkaWALSettings.h:61:60: error: missing field 'username' initializer [-Werror,-Wmissing-field-initializers]
[build]    61 |     KafkaWALAuth auth = { .security_protocol = "plaintext" };
[build]       |                                                            ^
[build] 1 error generated.
[build] /home/what-is-me/develop/proton/src/Interpreters/Context.cpp:2209:20: error: returning variable 'keeper_dispatcher' by reference requires holding mutex 'shared->keeper_dispatcher_mutex' exclusively [-Werror,-Wthread-safety-reference-return]
[build]  2209 |     return shared->keeper_dispatcher;
[build]       |                    ^
[build] /home/what-is-me/develop/proton/src/Interpreters/Context.cpp:2204:1: note: thread warning in function 'getKeeperDispatcher'
[build]  2204 | {
[build]       | ^
[build] /home/what-is-me/develop/proton/src/Interpreters/Context.cpp:2267:20: error: returning variable 'metastore_dispatcher' by reference requires holding mutex 'shared->metastore_dispatcher_mutex' exclusively [-Werror,-Wthread-safety-reference-return]
[build]  2267 |     return shared->metastore_dispatcher;
[build]       |                    ^
[build] /home/what-is-me/develop/proton/src/Interpreters/Context.cpp:2262:1: note: thread warning in function 'getMetaStoreDispatcher'
[build]  2262 | {
[build]       | ^
[build] /home/what-is-me/develop/proton/src/Interpreters/Context.cpp:2340:20: error: returning variable 'remote_host_filter' by reference requires holding mutex 'shared->mutex' [-Werror,-Wthread-safety-reference-return]
[build]  2340 |     return shared->remote_host_filter;
[build]       |                    ^
[build] /home/what-is-me/develop/proton/src/Interpreters/Context.cpp:2338:1: note: thread warning in function 'getRemoteHostFilter'
[build]  2338 | {
[build]       | ^
[build] 3 errors generated.

These can also be solved by adding no_warning(missing-field-initializers) and no_warning(thread-safety-reference-return). However, finally, it fails with error:

[build] FAILED: utils/memcpy-bench/memcpy-bench 
[build] : && /usr/bin/clang++-18 --target=x86_64-linux-gnu --sysroot=/home/what-is-me/develop/proton/cmake/linux/../../contrib/sysroot/linux-x86_64/x86_64-linux-gnu/libc --gcc-toolchain=/home/what-is-me/develop/proton/cmake/linux/../../contrib/sysroot/linux-x86_64  -g -fno-omit-frame-pointer -DSANITIZER -fsanitize=address -fsanitize-address-use-after-scope -lresolv -fdiagnostics-color=always -Xclang -fuse-ctor-homing -Wno-enum-constexpr-conversion -fsized-deallocation  -gdwarf-aranges -pipe -mssse3 -msse4.1 -msse4.2 -mpclmul -mpopcnt -fasynchronous-unwind-tables -falign-functions=32 -mbranches-within-32B-boundaries   -Wall -Wno-unused-command-line-argument  -fdiagnostics-absolute-paths -fstrict-vtable-pointers -Wall -Wextra -Weverything -Wpedantic -Wno-zero-length-array -Wno-c++98-compat-pedantic -Wno-c++98-compat -Wno-c++20-compat -Wno-sign-conversion -Wno-implicit-int-conversion -Wno-implicit-int-float-conversion -Wno-shorten-64-to-32 -Wno-ctad-maybe-unsupported -Wno-disabled-macro-expansion -Wno-documentation-unknown-command -Wno-double-promotion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-prototypes -Wno-missing-variable-declarations -Wno-padded -Wno-switch-enum -Wno-undefined-func-template -Wno-unused-template -Wno-vla -Wno-weak-template-vtables -Wno-weak-vtables -Wno-thread-safety-negative -Wno-enum-constexpr-conversion -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-deprecated-declarations -Wno-missing-field-initializers -Wno-thread-safety-reference-return -g -O0 -g -gdwarf-4  -D_LIBCPP_DEBUG=0 --gcc-toolchain=/home/what-is-me/develop/proton/cmake/linux/../../contrib/sysroot/linux-x86_64 --ld-path=/usr/bin/ld.lld-18 -rdynamic -Wl,--gdb-index -Wl,--build-id=sha1 src/CMakeFiles/clickhouse_malloc.dir/Common/malloc.cpp.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy-bench.cpp.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/FastMemcpy.cpp.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/FastMemcpy_Avx.cpp.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/glibc/memcpy-ssse3.S.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/glibc/memcpy-ssse3-back.S.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/glibc/memmove-sse2-unaligned-erms.S.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/glibc/memmove-avx-unaligned-erms.S.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/glibc/memmove-avx512-unaligned-erms.S.o utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/glibc/memmove-avx512-no-vzeroupper.S.o -o utils/memcpy-bench/memcpy-bench  src/libclickhouse_new_deleted.a  src/libdbmsd.a  contrib/boost-cmake/lib_boost_program_optionsd.a  src/Storages/ExternalStream/libexternal_streamd.a  src/KafkaLog/libklogd.a  src/NativeLog/libnlogd.a  src/Storages/ExternalTable/libexternal_tabled.a  src/Checkpoint/libcheckpointd.a  contrib/llvm-project/llvm/lib/libLLVMExecutionEngined.a  contrib/llvm-project/llvm/lib/libLLVMOrcTargetProcessd.a  contrib/llvm-project/llvm/lib/libLLVMOrcSharedd.a  contrib/llvm-project/llvm/lib/libLLVMRuntimeDyldd.a  contrib/llvm-project/llvm/lib/libLLVMPassesd.a  contrib/llvm-project/llvm/lib/libLLVMCoroutinesd.a  contrib/llvm-project/llvm/lib/libLLVMObjCARCOptsd.a  contrib/llvm-project/llvm/lib/libLLVMipod.a  contrib/llvm-project/llvm/lib/libLLVMFrontendOpenMPd.a  contrib/llvm-project/llvm/lib/libLLVMIRReaderd.a  contrib/llvm-project/llvm/lib/libLLVMAsmParserd.a  contrib/llvm-project/llvm/lib/libLLVMLinkerd.a  contrib/llvm-project/llvm/lib/libLLVMVectorized.a  contrib/llvm-project/llvm/lib/libLLVMX86CodeGend.a  contrib/llvm-project/llvm/lib/libLLVMAsmPrinterd.a  contrib/llvm-project/llvm/lib/libLLVMGlobalISeld.a  contrib/llvm-project/llvm/lib/libLLVMSelectionDAGd.a  contrib/llvm-project/llvm/lib/libLLVMCodeGend.a  contrib/llvm-project/llvm/lib/libLLVMBitWriterd.a  contrib/llvm-project/llvm/lib/libLLVMScalarOptsd.a  contrib/llvm-project/llvm/lib/libLLVMAggressiveInstCombined.a  contrib/llvm-project/llvm/lib/libLLVMInstCombined.a  contrib/llvm-project/llvm/lib/libLLVMInstrumentationd.a  contrib/llvm-project/llvm/lib/libLLVMTransformUtilsd.a  contrib/llvm-project/llvm/lib/libLLVMTargetd.a  contrib/llvm-project/llvm/lib/libLLVMAnalysisd.a  contrib/llvm-project/llvm/lib/libLLVMProfileDatad.a  contrib/llvm-project/llvm/lib/libLLVMSymbolized.a  contrib/llvm-project/llvm/lib/libLLVMDebugInfoDWARFd.a  contrib/llvm-project/llvm/lib/libLLVMDebugInfoPDBd.a  contrib/llvm-project/llvm/lib/libLLVMObjectd.a  contrib/llvm-project/llvm/lib/libLLVMBitReaderd.a  contrib/llvm-project/llvm/lib/libLLVMMCParserd.a  contrib/llvm-project/llvm/lib/libLLVMTextAPId.a  contrib/llvm-project/llvm/lib/libLLVMDebugInfoMSFd.a  contrib/llvm-project/llvm/lib/libLLVMX86Descd.a  contrib/llvm-project/llvm/lib/libLLVMMCDisassemblerd.a  contrib/llvm-project/llvm/lib/libLLVMX86Infod.a  contrib/llvm-project/llvm/lib/libLLVMMCd.a  contrib/llvm-project/llvm/lib/libLLVMDebugInfoCodeViewd.a  contrib/llvm-project/llvm/lib/libLLVMCFGuardd.a  contrib/llvm-project/llvm/lib/libLLVMCored.a  contrib/llvm-project/llvm/lib/libLLVMRemarksd.a  contrib/llvm-project/llvm/lib/libLLVMBitstreamReaderd.a  contrib/llvm-project/llvm/lib/libLLVMBinaryFormatd.a  contrib/llvm-project/llvm/lib/libLLVMSupportd.a  contrib/llvm-project/llvm/lib/libLLVMDemangled.a  contrib/croaring-cmake/lib_roaringd.a  contrib/librdkafka-cmake/lib_rdkafkad.a  contrib/cyrus-sasl-cmake/lib_sasl2d.a  contrib/krb5-cmake/lib_krb5d.a  contrib/nuraft-cmake/lib_nuraftd.a  contrib/boost-cmake/lib_boost_coroutined.a  src/V8/libV8d.a  contrib/v8-cmake/libv8_compilerd.a  contrib/v8-cmake/libv8_base_without_compilerd.a  contrib/v8-cmake/libv8_snapshotd.a  contrib/v8-cmake/libv8_inspectord.a  contrib/v8-cmake/libv8_libplatformd.a  contrib/v8-cmake/libv8_libsamplerd.a  contrib/v8-cmake/libv8_libbased.a  contrib/v8-cmake/libv8_initializersd.a  contrib/v8-cmake/libv8_torque_generatedd.a  src/Common/Config/libclickhouse_common_configd.a  contrib/yaml-cpp-cmake/lib_yaml_cppd.a  src/Common/ZooKeeper/libclickhouse_common_zookeeperd.a  src/Dictionaries/Embedded/libclickhouse_dictionaries_embeddedd.a  src/Parsers/libclickhouse_parsersd.a  src/Access/Common/libclickhouse_common_accessd.a  src/libclickhouse_common_iod.a  contrib/boost-cmake/lib_boost_program_optionsd.a  contrib/gwpasan-cmake/lib_gwp_asand.a  contrib/muduo-cmake/net/lib_muduo_netd.a  contrib/muduo-cmake/base/lib_muduo_based.a  base/widechar_width/libwidechar_widthd.a  base/base/libcommond.a  base/poco/NetSSL_OpenSSL/lib_poco_net_ssld.a  base/poco/Net/lib_poco_netd.a  base/poco/Crypto/lib_poco_cryptod.a  base/poco/Util/lib_poco_utild.a  base/poco/XML/lib_poco_xmld.a  base/poco/XML/lib_poco_xml_expatd.a  contrib/replxx-cmake/lib_replxxd.a  contrib/cctz-cmake/lib_cctzd.a  -Wl,--whole-archive /home/what-is-me/develop/proton/build/contrib/cctz-cmake/libtzdatad.a -Wl,--no-whole-archive  contrib/fmtlib-cmake/lib_fmtd.a  contrib/dragonbox-cmake/lib_dragonbox_to_charsd.a  contrib/re2-cmake/libre2_std.a  contrib/cityhash102/lib_cityhashd.a  contrib/xz-cmake/lib_liblzmad.a  contrib/liburing-cmake/lib_liburingd.a  contrib/bzip2-cmake/lib_bzip2d.a  base/poco/JSON/lib_poco_jsond.a  base/poco/Foundation/lib_poco_foundationd.a  base/poco/Foundation/lib_poco_foundation_pcred.a  base/poco/JSON/lib_poco_json_pdjsond.a  src/Common/StringUtils/libstring_utilsd.a  contrib/boost-cmake/lib_boost_systemd.a  contrib/arrow-cmake/lib_parquetd.a  contrib/arrow-cmake/lib_arrowd.a  contrib/boost-cmake/lib_boost_filesystemd.a  contrib/double-conversion-cmake/lib_double-conversiond.a  contrib/brotli-cmake/lib_brotlid.a  contrib/flatbuffers/libflatbuffersd.a  contrib/arrow-cmake/lib_orcd.a  contrib/thrift-cmake/lib_thriftd.a  contrib/boost-cmake/lib_boost_regexd.a  contrib/avro-cmake/lib_avrocppd.a  contrib/boost-cmake/lib_boost_iostreamsd.a  src/Server/grpc_protos/libclickhouse_grpc_protosd.a  contrib/grpc/libgrpc++d.a  contrib/protobuf-cmake/lib_libprotobufd.a  contrib/grpc/libgrpcd.a  contrib/re2-cmake/libre2d.a  contrib/c-ares-cmake/lib_c-aresd.a  contrib/abseil-cpp/absl/hash/libabsl_hashd.a  contrib/abseil-cpp/absl/hash/libabsl_cityd.a  contrib/abseil-cpp/absl/types/libabsl_bad_variant_accessd.a  contrib/abseil-cpp/absl/hash/libabsl_low_level_hashd.a  contrib/abseil-cpp/absl/container/libabsl_raw_hash_setd.a  contrib/abseil-cpp/absl/container/libabsl_hashtablez_samplerd.a  contrib/boringssl-cmake/lib_ssld.a  contrib/boringssl-cmake/lib_cryptod.a  contrib/abseil-cpp/absl/status/libabsl_statusd.a  contrib/abseil-cpp/absl/strings/libabsl_cordd.a  contrib/abseil-cpp/absl/strings/libabsl_cordz_infod.a  contrib/abseil-cpp/absl/strings/libabsl_cord_internald.a  contrib/abseil-cpp/absl/strings/libabsl_cordz_functionsd.a  contrib/abseil-cpp/absl/profiling/libabsl_exponential_biasedd.a  contrib/abseil-cpp/absl/strings/libabsl_cordz_handled.a  contrib/abseil-cpp/absl/types/libabsl_bad_optional_accessd.a  contrib/grpc/libaddress_sortingd.a  contrib/grpc/libupbd.a  contrib/grpc/libgprd.a  -ldl  -lpthread  -lrt  contrib/abseil-cpp/absl/synchronization/libabsl_synchronizationd.a  contrib/abseil-cpp/absl/debugging/libabsl_stacktraced.a  contrib/abseil-cpp/absl/debugging/libabsl_symbolized.a  contrib/abseil-cpp/absl/debugging/libabsl_debugging_internald.a  contrib/abseil-cpp/absl/debugging/libabsl_demangle_internald.a  contrib/abseil-cpp/absl/synchronization/libabsl_graphcycles_internald.a  contrib/abseil-cpp/absl/base/libabsl_malloc_internald.a  contrib/abseil-cpp/absl/time/libabsl_timed.a  contrib/abseil-cpp/absl/time/libabsl_civil_timed.a  contrib/abseil-cpp/absl/time/libabsl_time_zoned.a  contrib/abseil-cpp/absl/strings/libabsl_str_format_internald.a  contrib/abseil-cpp/absl/strings/libabsl_stringsd.a  contrib/abseil-cpp/absl/strings/libabsl_strings_internald.a  contrib/abseil-cpp/absl/base/libabsl_based.a  contrib/abseil-cpp/absl/base/libabsl_spinlock_waitd.a  -lrt  contrib/abseil-cpp/absl/base/libabsl_throw_delegated.a  contrib/abseil-cpp/absl/base/libabsl_raw_logging_internald.a  contrib/abseil-cpp/absl/base/libabsl_log_severityd.a  contrib/abseil-cpp/absl/numeric/libabsl_int128d.a  contrib/rocksdb-cmake/lib_rocksdbd.a  contrib/lz4-cmake/lib_lz4d.a  contrib/zstd-cmake/lib_zstdd.a  contrib/zlib-ng-cmake/lib_zlibd.a  contrib/snappy-cmake/lib_snappyd.a  contrib/boost-cmake/lib_boost_contextd.a  contrib/simdjson-cmake/lib_simdjsond.a  contrib/consistent-hashing/lib_consistent_hashingd.a  -Wl,--start-group  base/glibc-compatibility/libglibc-compatibilityd.a  base/glibc-compatibility/memcpy/libmemcpyd.a  contrib/libcxx-cmake/libcxxd.a  contrib/libcxxabi-cmake/libcxxabid.a  contrib/libunwind-cmake/libunwindd.a  -Wl,--end-group  -nodefaultlibs /usr/lib/llvm-18/lib/clang/18/lib/linux/libclang_rt.builtins-x86_64.a  -lc -lm -lrt -lpthread -ldl && :
[build] ld.lld-18: error: relocation R_X86_64_32S cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by memcpy_jart.S:47 (/home/what-is-me/develop/proton/utils/memcpy-bench/memcpy_jart.S:47)
[build] >>>               utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(MemCpy)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x0)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x8)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x10)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x18)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x20)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x28)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x30)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x38)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x40)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x48)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x50)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x58)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x60)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x68)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x70)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x78)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x80)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x88)
[build] 
[build] ld.lld-18: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
[build] >>> defined in utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o
[build] >>> referenced by utils/memcpy-bench/CMakeFiles/memcpy-bench.dir/memcpy_jart.S.o:(.rodata+0x90)
[build] 
[build] ld.lld-18: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
[build] clang++-18: error: linker command failed with exit code 1 (use -v to see invocation)

so we should add -fPIC to CXX_FLAGS ?

yokofly commented 2 weeks ago

@what-is-me It seems this is an old issue https://github.com/timeplus-io/proton/issues/719. While I am debugging, let's simply use cmake .. instead of address sanitizer to make progress first.