[
https://issues.apache.org/jira/browse/MESOS-2414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14351029#comment-14351029
]
Niklas Quarfot Nielsen commented on MESOS-2414:
-----------------------------------------------
We could provoke this bug without shutting the VM down. It was an issue where
multiple driver instances would be created and I suspect that the
NO_SUCH_FIELD_ERROR static in the getFieldID isn't thread safe.
At any rate, the following patch fixed the issue:
{code}
diff --git a/src/java/jni/convert.cpp b/src/java/jni/convert.cpp
index 9f99031..44af191 100644
--- a/src/java/jni/convert.cpp
+++ b/src/java/jni/convert.cpp
@@ -522,13 +522,9 @@ Result<jfieldID> getFieldID(
const char* name,
const char* signature)
{
- static jclass NO_SUCH_FIELD_ERROR = NULL;
-
- if (NO_SUCH_FIELD_ERROR == NULL) {
- NO_SUCH_FIELD_ERROR = env->FindClass("java/lang/NoSuchFieldError");
- if (env->ExceptionCheck() == JNI_TRUE) {
- return Error("Cannot find NoSuchFieldError class");
- }
+ jclass NO_SUCH_FIELD_ERROR = env->FindClass("java/lang/NoSuchFieldError");
+ if (env->ExceptionCheck() == JNI_TRUE) {
+ return Error("Cannot find NoSuchFieldError class");
}
jfieldID jfield = env->GetFieldID(clazz, name, signature);
{code}
[~bmahler] Would you be OK with such a change? It should be a noop but involve
an extra FindClass call.
> Java bindings segfault during framework shutdown
> ------------------------------------------------
>
> Key: MESOS-2414
> URL: https://issues.apache.org/jira/browse/MESOS-2414
> Project: Mesos
> Issue Type: Bug
> Reporter: Niklas Quarfot Nielsen
> Assignee: Niklas Quarfot Nielsen
>
> {code}
> I0226 16:39:59.063369 626044928 sched.cpp:831] Stopping framework
> '20150220-141149-16777343-5050-45194-0000'
> [2015-02-26 16:39:59,063] INFO Driver future completed. Executing optional
> abdication command. (mesosphere.marathon.MarathonSchedulerService:191)
> [2015-02-26 16:39:59,065] INFO Setting framework ID to
> 20150220-141149-16777343-5050-45194-0000
> (mesosphere.marathon.MarathonSchedulerService:75)
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # SIGSEGV (0xb) at pc=0x0000000106a266d0, pid=99408, tid=44291
> #
> # JRE version: Java(TM) SE Runtime Environment (8.0_25-b17) (build
> 1.8.0_25-b17)
> # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.25-b02 mixed mode bsd-amd64
> compressed oops)
> # Problematic frame:
> # V [libjvm.dylib+0x4266d0] Klass::is_subtype_of(Klass*) const+0x4
> #
> # Failed to write core dump. Core dumps have been disabled. To enable core
> dumping, try "ulimit -c unlimited" before starting Java again
> #
> # An error report file with more information is saved as:
> # /Users/corpsi/projects/marathon/hs_err_pid99408.log
> #
> # If you would like to submit a bug report, please visit:
> # http://bugreport.sun.com/bugreport/crash.jsp
> #
> Abort trap: 6
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)