From 38a0228acb1dc7b50999f444edab7a4063e26e91 Mon Sep 17 00:00:00 2001 From: mbaesken Date: Mon, 18 Mar 2019 15:29:19 +0100 Subject: [PATCH] 8220355: Improve assertion texts and exception messages in eventHandlerVMInit Reviewed-by: alanb, sspitsyn, jcbeyler --- .../native/libinstrument/InvocationAdapter.c | 44 +++++++++---------- .../share/native/libinstrument/JPLISAgent.c | 11 ++--- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/java.instrument/share/native/libinstrument/InvocationAdapter.c b/src/java.instrument/share/native/libinstrument/InvocationAdapter.c index 2845bb5edb..86c078f841 100644 --- a/src/java.instrument/share/native/libinstrument/InvocationAdapter.c +++ b/src/java.instrument/share/native/libinstrument/InvocationAdapter.c @@ -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 @@ eventHandlerVMInit( jvmtiEnv * jvmtienv, 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; - - outstandingException = preserveThrowable(jnienv); - success = processJavaStart( environment->mAgent, - jnienv); - restoreThrowable(jnienv, outstandingException); + 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); /* if we fail to start cleanly, bring down the JVM */ if ( !success ) { - abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART); + abortJVM(jnienv, JPLIS_ERRORMESSAGE_CANNOTSTART ", processJavaStart failed"); } } diff --git a/src/java.instrument/share/native/libinstrument/JPLISAgent.c b/src/java.instrument/share/native/libinstrument/JPLISAgent.c index b6485d23f5..3ca1d32cf0 100644 --- a/src/java.instrument/share/native/libinstrument/JPLISAgent.c +++ b/src/java.instrument/share/native/libinstrument/JPLISAgent.c @@ -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 @@ processJavaStart( JPLISAgent * agent, */ /* - * 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 @@ processJavaStart( JPLISAgent * agent, */ if ( result ) { result = setLivePhaseEventHandlers(agent); - jplis_assert(result); + jplis_assert_msg(result, "setting of live phase VM handlers failed"); } /* @@ -419,6 +419,7 @@ processJavaStart( JPLISAgent * agent, result = startJavaAgent(agent, jnienv, agent->mAgentClassName, agent->mOptionsString, agent->mPremainCaller); + jplis_assert_msg(result, "agent load/premain call failed"); } /* -- GitLab