--- old/jdk/src/java.base/share/native/libjli/java.c 2016-08-19 12:32:34.182575359 +0200 +++ new/jdk/src/java.base/share/native/libjli/java.c 2016-08-19 12:32:33.970570613 +0200 @@ -376,6 +376,12 @@ } \ } while (JNI_FALSE) +#define CHECK_EXCEPTION_PRINT() \ + do { \ + if ((*env)->ExceptionOccurred(env)) { \ + JLI_ReportExceptionDescription(env); \ + } \ + } while (JNI_FALSE) int JNICALL JavaMain(void * _args) @@ -1529,6 +1535,7 @@ str = (*env)->CallStaticObjectMethod(env, cls, makePlatformStringMID, USE_STDERR, ary); (*env)->DeleteLocalRef(env, ary); + CHECK_EXCEPTION_PRINT(); return str; } } @@ -1580,6 +1587,7 @@ NULL_CHECK0(str = NewPlatformString(env, name)); NULL_CHECK0(result = (*env)->CallStaticObjectMethod(env, cls, mid, USE_STDERR, mode, str)); + CHECK_EXCEPTION_PRINT(); if (JLI_IsTraceLauncher()) { end = CounterGet(); @@ -1601,7 +1609,9 @@ "getApplicationClass", "()Ljava/lang/Class;")); - return (*env)->CallStaticObjectMethod(env, cls, mid); + cls = (*env)->CallStaticObjectMethod(env, cls, mid); + CHECK_EXCEPTION_PRINT(); + return cls; } /* @@ -1812,6 +1822,7 @@ ); (*env)->CallStaticVoidMethod(env, ver, print); + CHECK_EXCEPTION_PRINT(); } /* @@ -1834,6 +1845,7 @@ (jlong)maxHeapSize, (jlong)threadStackSize, ServerClassMachine()); + CHECK_EXCEPTION_PRINT(); } /** @@ -1852,6 +1864,7 @@ (*env)->CallStaticVoidMethod(env, cls, listModulesID, USE_STDERR, joptString); + CHECK_EXCEPTION_PRINT(); } /* @@ -1869,6 +1882,7 @@ NULL_CHECK(printXUsageMessage = (*env)->GetStaticMethodID(env, cls, "printXUsageMessage", "(Z)V")); (*env)->CallStaticVoidMethod(env, cls, printXUsageMessage, USE_STDERR); + CHECK_EXCEPTION_PRINT(); } else { NULL_CHECK(initHelp = (*env)->GetStaticMethodID(env, cls, "initHelpMessage", "(Ljava/lang/String;)V")); @@ -1933,6 +1947,7 @@ /* Complete the usage message and print to stderr*/ (*env)->CallStaticVoidMethod(env, cls, printHelp, USE_STDERR); + CHECK_EXCEPTION_RETURN(); } return; }