Skip to Main Content
Netreo Ideas Portal
Status Acknowledged
Created by Guest
Created on Oct 28, 2022

stackify-java-apm: Ignore constructor when stackify-apm.json includes wildcard for "Method"

When a custom profiling configuration is used and the value of "Method" is "*", this always causes issues at runtime because the apm is modifying the bytecode for the constructor and is trying to assign the local unitializedThis to java.lang.Object.
To work around this I need to add one entry for every letter in the alphabet followed by the wildcard for every class I'm interested in profiling. This is very limiting.


The following section shows part of an exception from a web app running in Wildfly 26.1 when stackify-apm.json includes:
{

"Class": "org.jboss.jca.adapters.jdbc.WrappedConnection",

"Method": "*"

}

If the java apm could be modified so that the constructor was never modified that would avoid these issues completely.



java.lang.VerifyError: Bad type on operand stack

Exception Details:

Location:

org/jboss/jca/adapters/jdbc/WrappedConnection.<init>(Lorg/jboss/jca/adapters/jdbc/BaseWrapperManagedConnection;ZLjava/lang/String;ZLorg/jboss/jca/adapters/jdbc/spi/ClassLoaderPlugin;)V @60: invokestatic

Reason:

Type uninitializedThis (current frame, stack[2]) is not assignable to 'java/lang/Object'

Current Frame:

bci: @60

flags: { flagThisUninit }

locals: { uninitializedThis, 'org/jboss/jca/adapters/jdbc/BaseWrapperManagedConnection', integer, 'java/lang/String', integer, 'org/jboss/jca/adapters/jdbc/spi/ClassLoaderPlugin', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'java/util/EnumMap' }

stack: { 'java/lang/String', 'java/util/EnumMap', uninitializedThis }

Bytecode:

0000000: 1303 0e3a 0613 0310 3a07 1303 123a 08bb

0000010: 0314 5913 0316 b703 193a 0919 09b2 031d

0000020: 1303 1fb9 0320 0300 5719 09b2 0323 1303

0000030: 25b9 0320 0300 5719 0619 092a b803 2b57

0000040: b803 2f01 a500 16b2 0332 1303 34bb 021b

0000050: 5913 0335 b703 36b8 033a a700 0d3a 0a19

0000060: 0ab8 0340 a700 032a b700 022a 03b5 0003

0000070: 2a03 b500 042a 01b5 0005 2a2b b600 062a

0000080: 1cb6 0007 2a2d b600 082a 1504 b500 092a

0000090: 1905 b500 0aa7 002b 3a0d 013a 0c13 030e

00000a0: 3a0e 1303 103a 0f13 0312 3a10 bb03 1459

00000b0: 1303 16b7 0319 3a11 1911 b803 4319 0dbf

00000c0: 013a 0c13 030e 3a12 1303 103a 1313 0312

00000d0: 3a14 bb03 1459 1303 16b7 0319 3a15 1915

00000e0: b803 43b1

Netreo Product Area Prefix
  • Attach files