Skip to content

Commit e142d02

Browse files
authored
[fix](memory) Disable Arrow Jemalloc (apache#37528)
## Proposed changes Currently, Arrow use separate Jemalloc, and use non-standard methods `mallocx`, `sdallocx`, `rallocx` in `memory_pool_jemalloc.cc` to optimize memory allocation. But this may be incompatible with older versions of the Linux kernel. when we use Arrow on Arm Kirin v10 or Centos 7.4, it will get stuck on the Jemalloc Lock, with the stack below, it will appear when calling `arrow::RecordBatch::MakeEmpty`. the kernel version of Arm Kylin v10 is 4.19.90, and the kernel version of Centos 7.4 is 4.14. ``` #0 0x0000ffffae3ceff8 in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x0000ffffae3c9b50 in pthread_mutex_lock () from /lib64/libpthread.so.0 apache#2 0x0000ffffae61c834 in pthread_mutex_lock () from /lib64/libc.so.6 apache#3 0x0000aaaac99bc1e0 in je_arrow_private_je_malloc_mutex_lock_slow () apache#4 0x0000aaaac99af3a4 in ?? () apache#5 0x0000aaaac99b576c in je_arrow_mallocx () apache#6 0x0000aaaac99a8aec in ?? () apache#7 0x0000aaaac99a9858 in arrow::AllocateResizableBuffer(long, arrow::MemoryPool*) () apache#8 0x0000aaaac399f8b8 in arrow::BufferBuilder::Resize(long, bool) () apache#9 0x0000aaaac983715c in arrow::BaseBinaryBuilder<arrow::BinaryType>::Resize(long) () apache#10 0x0000aaaac39a47e0 in arrow::BaseBinaryBuilder<arrow::BinaryType>::Append(unsigned char const*, int) () ``` After disable separate Jemalloc when compiling Arrow, the above error disappeared, and Arrow will use the default memory allocator, which is Doris Jemalloc.
1 parent bc8e660 commit e142d02

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

thirdparty/build-thirdparty.sh

+2-4
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,6 @@ build_arrow() {
10061006
export ARROW_LZ4_URL="${TP_SOURCE_DIR}/${LZ4_NAME}"
10071007
export ARROW_FLATBUFFERS_URL="${TP_SOURCE_DIR}/${FLATBUFFERS_NAME}"
10081008
export ARROW_ZSTD_URL="${TP_SOURCE_DIR}/${ZSTD_NAME}"
1009-
export ARROW_JEMALLOC_URL="${TP_SOURCE_DIR}/${JEMALLOC_ARROW_NAME}"
10101009
export ARROW_Thrift_URL="${TP_SOURCE_DIR}/${THRIFT_NAME}"
10111010
export ARROW_SNAPPY_URL="${TP_SOURCE_DIR}/${SNAPPY_NAME}"
10121011
export ARROW_ZLIB_URL="${TP_SOURCE_DIR}/${ZLIB_NAME}"
@@ -1058,7 +1057,8 @@ build_arrow() {
10581057
-DSnappy_LIB="${TP_INSTALL_DIR}/lib/libsnappy.a" -DSnappy_INCLUDE_DIR="${TP_INSTALL_DIR}/include" \
10591058
-DSnappy_SOURCE=SYSTEM \
10601059
-DBOOST_ROOT="${TP_INSTALL_DIR}" --no-warn-unused-cli \
1061-
-Djemalloc_SOURCE=BUNDLED \
1060+
-DARROW_JEMALLOC=OFF -DARROW_MIMALLOC=OFF \
1061+
-DJEMALLOC_HOME="${TP_INSTALL_DIR}" \
10621062
-DARROW_THRIFT_USE_SHARED=OFF \
10631063
-DThrift_SOURCE=SYSTEM \
10641064
-DThrift_ROOT="${TP_INSTALL_DIR}" ..
@@ -1067,12 +1067,10 @@ build_arrow() {
10671067
"${BUILD_SYSTEM}" install
10681068

10691069
#copy dep libs
1070-
cp -rf ./jemalloc_ep-prefix/src/jemalloc_ep/dist/lib/libjemalloc_pic.a "${TP_INSTALL_DIR}/lib64/libjemalloc_arrow.a"
10711070
cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlienc-static.a "${TP_INSTALL_DIR}/lib64/libbrotlienc.a"
10721071
cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlidec-static.a "${TP_INSTALL_DIR}/lib64/libbrotlidec.a"
10731072
cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlicommon-static.a "${TP_INSTALL_DIR}/lib64/libbrotlicommon.a"
10741073
strip_lib libarrow.a
1075-
strip_lib libjemalloc_arrow.a
10761074
strip_lib libparquet.a
10771075
}
10781076

0 commit comments

Comments
 (0)