diff options
Diffstat (limited to 'openjdkjvm/OpenjdkJvm.cc')
| -rw-r--r-- | openjdkjvm/OpenjdkJvm.cc | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/openjdkjvm/OpenjdkJvm.cc b/openjdkjvm/OpenjdkJvm.cc index 8297c54174..675a401bb6 100644 --- a/openjdkjvm/OpenjdkJvm.cc +++ b/openjdkjvm/OpenjdkJvm.cc @@ -313,7 +313,9 @@ JNIEXPORT void JVM_GC(void) {  JNIEXPORT __attribute__((noreturn)) void JVM_Exit(jint status) {    LOG(INFO) << "System.exit called, status: " << status;    art::Runtime::Current()->CallExitHook(status); -  exit(status); +  // Unsafe to call exit() while threads may still be running. They would race +  // with static destructors. +  _exit(status);  }  JNIEXPORT jstring JVM_NativeLoad(JNIEnv* env, @@ -471,7 +473,7 @@ JNIEXPORT __attribute__((noreturn)) jboolean JVM_RaiseSignal(jint signum ATTRIBU  }  JNIEXPORT __attribute__((noreturn))  void JVM_Halt(jint code) { -  exit(code); +  _exit(code);  }  JNIEXPORT jboolean JVM_IsNaN(jdouble d) {  |