mirror of
https://github.com/apache/doris.git
synced 2026-11-04 07:31:17 +00:00
[fix](libjdk) Revert support loading libjvm at runtime (#35557)
## Proposed changes Revert #13660 `-l` and `dlopen` load Dynamic Link Library, will use the Allocator of main program, Doris use Jemalloc by default. but, `dlopen` load libjvm.so and use Jemalloc compiled with prefix, overwriting malloc/free will incompatible with libjvm.so. see #34578 for details. In addition, jemalloc not recommend `dlopen` to load Dynamic Link Library, `dlclose` will memory leak in that case. https://github.com/jemalloc/jemalloc/issues/2404 https://github.com/jemalloc/jemalloc/issues/1321 https://github.com/jemalloc/jemalloc/issues/1890 `export LD_PRELOAD` to force `libjvm.so` use a separate `jemalloc.so` will not solve the problem, but may cause a new crash. ``` received by PID 2368 (TID 2391 OR 0x7f445cafb700) from PID 0; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /root/selectdb-core/be/src/common/signal_handler.h:421 1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0] in /opt/jdk/lib/server/libjvm.so 2# JVM_handle_linux_signal in /opt/jdk/lib/server/libjvm.so 3# 0x00007F448DB40400 in /lib64/libc.so.6 4# je_arena_dalloc_promoted at /root/selectdb-core/thirdparty/src/jemalloc-5.3.0/doris_build/../src/arena.c:1277 5# je_free_default at /root/selectdb-core/thirdparty/src/jemalloc-5.3.0/doris_build/../src/jemalloc.c:3014 6# __pthread_create_2_1 in /lib64/libpthread.so.0 7# os::create_thread(Thread*, os::ThreadType, unsigned long) in /opt/jdk/lib/server/libjvm.so 8# CompilerThread::CompilerThread(CompileQueue*, CompilerCounters*) in /opt/jdk/lib/server/libjvm.so 9# CompileBroker::make_thread(CompileBroker::ThreadType, _jobject*, CompileQueue*, AbstractCompiler*, JavaThread*) [clone .constprop.0] in /opt/jdk/lib/server/libjvm.so 10# CompileBroker::possibly_add_compiler_threads(JavaThread*) in /opt/jdk/lib/server/libjvm.so 11# CompileBroker::compiler_thread_loop() in /opt/jdk/lib/server/libjvm.so 12# JavaThread::thread_main_inner() in /opt/jdk/lib/server/libjvm.so 13# Thread::call_run() in /opt/jdk/lib/server/libjvm.so 14# thread_native_entry(Thread*) in /opt/jdk/lib/server/libjvm.so 15# start_thread in /lib64/libpthread.so.0 16# clone in /lib64/libc.so.6 ``` <!--Describe your changes.-->
This commit is contained in:
1 parent
47e52e3fc4
commit
cc854a32f1
6 files changed
+190
-43
No files matched your search
@@ -278,6 +278,35 @@ while read -r gcda_file; do
|
||||
rm "${gcda_file}"
|
||||
done < <(find "${CMAKE_BUILD_DIR}" -name "*gcda")
|
||||
|
||||
setup_java_env() {
|
||||
local java_version
|
||||
|
||||
if [[ -z "${JAVA_HOME}" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local jvm_arch='amd64'
|
||||
if [[ "$(uname -m)" == 'aarch64' ]]; then
|
||||
jvm_arch='aarch64'
|
||||
fi
|
||||
java_version="$(
|
||||
set -e
|
||||
jdk_version "${JAVA_HOME}/bin/java"
|
||||
)"
|
||||
if [[ "${java_version}" -gt 8 ]]; then
|
||||
export LD_LIBRARY_PATH="${JAVA_HOME}/lib/server:${JAVA_HOME}/lib:${LD_LIBRARY_PATH}"
|
||||
# JAVA_HOME is jdk
|
||||
elif [[ -d "${JAVA_HOME}/jre" ]]; then
|
||||
export LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/${jvm_arch}/server:${JAVA_HOME}/jre/lib/${jvm_arch}:${LD_LIBRARY_PATH}"
|
||||
# JAVA_HOME is jre
|
||||
else
|
||||
export LD_LIBRARY_PATH="${JAVA_HOME}/lib/${jvm_arch}/server:${JAVA_HOME}/lib/${jvm_arch}:${LD_LIBRARY_PATH}"
|
||||
fi
|
||||
}
|
||||
|
||||
# prepare jvm if needed
|
||||
setup_java_env || true
|
||||
|
||||
# prepare gtest output dir
|
||||
GTEST_OUTPUT_DIR="${CMAKE_BUILD_DIR}/gtest_output"
|
||||
rm -rf "${GTEST_OUTPUT_DIR}"
|
||||
|
||||
Reference in new issue
Block a user