From d2af8e42ec48f8519a3cdabc70a44fd8b5a2d0af Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh <40482367+khanhduytran0@users.noreply.github.com> Date: Wed, 30 Dec 2020 13:09:17 +0700 Subject: [PATCH] Try to avoid java re-exec to main thread --- src/main/jni/jre_launcher.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/jni/jre_launcher.c b/src/main/jni/jre_launcher.c index a9f2881b..5dce51d7 100644 --- a/src/main/jni/jre_launcher.c +++ b/src/main/jni/jre_launcher.c @@ -73,6 +73,15 @@ static jint launchJVM(int margc, char** margv) { } printf("Found JLI lib\n"); + // Avoid re-exec java to main thread + void *bool_started_obj = dlsym(libjli, "started"); + if (NULL == bool_started_obj) { + printf("re-exec.started = NULL: %s\n", dlerror()); + return -2; + } + jboolean *bool_started_ptr = (jboolean *) bool_started_obj; + *bool_started_ptr = JNI_TRUE; + JLI_Launch_func *pJLI_Launch = (JLI_Launch_func *)dlsym(libjli, "JLI_Launch"); // Boardwalk: silence @@ -80,7 +89,7 @@ static jint launchJVM(int margc, char** margv) { if (NULL == pJLI_Launch) { printf("JLI_Launch = NULL\n"); - return -1; + return -3; } printf("Calling JLI_Launch\n");