Unable to start the appserver, the below exception is reported in the application server log: "java.lang.VerifyError: JVMVRFY012 stack shape inconsistent"
Example 1:
[05/04/17 07:33:24:553 BST] 00000001 ContainerHelp E WSVR0501E: Error creating component com.ibm.ws.ssl.core.SSLComponentImpl
java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/ibm/ws/ssl/config/ManagementScopeData, method=<init>(Ljava/lang/String;)V, pc=22
at com.ibm.ws.ssl.config.ManagementScopeManager.currentScopeContained(ManagementScopeManager.java:324)
Example 2:
[INFO ] FFDC1015I: An FFDC Incident has been created: "javax.resource.ResourceException: java.lang.VerifyError: JVMVRFY012 stack shape inconsistent; class=com/ibm/msg/client/wmq/internal/WMQConnection, method=<init>(Lcom/ibm/mq/jmqi/JmqiEnvironment;Lcom/ibm/mq/jmqi/JmqiMQ;ILcom/ibm/msg/client/jms/JmsPropertyContext;)V, pc=22 com.ibm.ws.ejbcontainer.mdb.internal.MDBRuntimeImpl 782" at ffdc_17.05.03_11.16.
Defect information:
This issue is related to DE275471 - US309901 : constructor instrumentation broken with latest Oracle and IBM JVM 1.8 SR4 (8.0.4.0), 7 R1 SR4 (7.1.4.0), 7 SR10 FP0 (7.0.10.0)
CA APM Development worked with IBM Support to resolve the issue : PMR# 36599,756
The response was that the full instrumentation of constructors is discouraged.
To summarize:
The root cause is vagueness in java specification regarding the bytecode validation of class constructors.
When the agent add instrumentation to constructors the code that is added to measure execution time has to pass JVM byte code validation.
Unfortunately validation rules were somewhat vague and different versions of JVMs interpreted these rules differently.
As a result our instrumentation that passed in older JVM versions, does not pass in validation in some newer Versions.
There is also difference in different vendor interpretation of the specification.
What is the impact:
This problem with ctor instrumentation will affect the instanceCounter you should not miss anything except InstanceCounts metrics.