8220355: Improve assertion texts and exception messages in eventHandlerVMInit
Reviewed-by: alanb, sspitsyn, jcbeyler
--- a/src/java.instrument/share/native/libinstrument/InvocationAdapter.c Mon Mar 18 16:04:23 2019 +0100
+++ b/src/java.instrument/share/native/libinstrument/InvocationAdapter.c Mon Mar 18 15:29:19 2019 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -558,32 +558,32 @@
environment = getJPLISEnvironment(jvmtienv);
/* process the premain calls on the all the JPL agents */
- if ( environment != NULL ) {
- jthrowable outstandingException = NULL;
- /*
- * Add the jarfile to the system class path
- */
- JPLISAgent * agent = environment->mAgent;
- if (appendClassPath(agent, agent->mJarfile)) {
- fprintf(stderr, "Unable to add %s to system class path - "
- "the system class loader does not define the "
- "appendToClassPathForInstrumentation method or the method failed\n",
- agent->mJarfile);
- free((void *)agent->mJarfile);
- abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART);
- }
+ if (environment == NULL) {
+ abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART ", getting JPLIS environment failed");
+ }
+ jthrowable outstandingException = NULL;
+ /*
+ * Add the jarfile to the system class path
+ */
+ JPLISAgent * agent = environment->mAgent;
+ if (appendClassPath(agent, agent->mJarfile)) {
+ fprintf(stderr, "Unable to add %s to system class path - "
+ "the system class loader does not define the "
+ "appendToClassPathForInstrumentation method or the method failed\n",
+ agent->mJarfile);
free((void *)agent->mJarfile);
- agent->mJarfile = NULL;
+ abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART ", appending to system class path failed");
+ }
+ free((void *)agent->mJarfile);
+ agent->mJarfile = NULL;
- outstandingException = preserveThrowable(jnienv);
- success = processJavaStart( environment->mAgent,
- jnienv);
- restoreThrowable(jnienv, outstandingException);
- }
+ outstandingException = preserveThrowable(jnienv);
+ success = processJavaStart( environment->mAgent, jnienv);
+ restoreThrowable(jnienv, outstandingException);
/* if we fail to start cleanly, bring down the JVM */
if ( !success ) {
- abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART);
+ abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART ", processJavaStart failed");
}
}
--- a/src/java.instrument/share/native/libinstrument/JPLISAgent.c Mon Mar 18 16:04:23 2019 +0100
+++ b/src/java.instrument/share/native/libinstrument/JPLISAgent.c Mon Mar 18 15:29:19 2019 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -389,17 +389,17 @@
*/
/*
- * First make our emergency fallback InternalError throwable.
+ * First make our fallback InternalError throwable.
*/
result = initializeFallbackError(jnienv);
- jplis_assert(result);
+ jplis_assert_msg(result, "fallback init failed");
/*
* Now make the InstrumentationImpl instance.
*/
if ( result ) {
result = createInstrumentationImpl(jnienv, agent);
- jplis_assert(result);
+ jplis_assert_msg(result, "instrumentation instance creation failed");
}
@@ -409,7 +409,7 @@
*/
if ( result ) {
result = setLivePhaseEventHandlers(agent);
- jplis_assert(result);
+ jplis_assert_msg(result, "setting of live phase VM handlers failed");
}
/*
@@ -419,6 +419,7 @@
result = startJavaAgent(agent, jnienv,
agent->mAgentClassName, agent->mOptionsString,
agent->mPremainCaller);
+ jplis_assert_msg(result, "agent load/premain call failed");
}
/*