Details
Description
When a Java scheduler using HTTP v0-v1 adapter loses the leading Mesos master, V0ToV1AdapterProcess::disconnected() is invoked, which in turn invokes Java scheduler code via JNI. This call uses the wrong object, jmesos instead of jscheduler, which crashes JVM:
# # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f4bca3849bf, pid=21, tid=0x00007f4b2ac45700 # # JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode linux-amd64 compressed oops) # Problematic frame: # V [libjvm.so+0x6d39bf] jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x1af
Stack: [0x00007f4b2a445000,0x00007f4b2ac46000], sp=0x00007f4b2ac44a80, free space=8190k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x6d39bf] jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x1af V [libjvm.so+0x6d7fef] jni_CallVoidMethodV+0x10f C [libmesos-1.2.0.so+0x1aa32d3] JNIEnv_::CallVoidMethod(_jobject*, _jmethodID*, ...)+0x93