JRockit Crashes when Instrumentation Software Agents Use Bytecode Injection (Doc ID 2285026.1)

Last updated on JULY 16, 2017

Applies to:

Oracle JRockit - Version R28 and later
Information in this document applies to any platform.

Symptoms

JRockit crashes may occur when using instrumentation software that employs bytecode injection, thereby transforming the runtime Java bytecode.  The crashes can occur even when the bytecode being injected is valid.  Some bytecode injection may work while other valid bytecode injection may lead to a JVM crash.

For example, with Dynatrace 6.3.X JVM agent, JRockit 28.3.x, and WebLogic 10.3.6, some sensors instrument the executeIt() method and a crash is later seen in various areas after a call to RequestManager.executeIt():

 

at java/lang/System.currentTimeMillis()J(Native Method)
at weblogic/work/WorkAdapter.started(WorkAdapter.java:242)
at weblogic/work/RequestManager.setOrNotifyRequest(RequestManager.java:651)
at weblogic/work/RequestManager.executeIt(RequestManager.java:240)

 

at findNext+310(refiter.c:598)@0x2b647da500c6
at findNextToReturn+108(refiter.c:302)@0x2b647da501ad
at refIterFillFromFrame+343(refiter.c:123)@0x2b647da505b8
at trProcessLocksForThread+85(roots.c:620)@0x2b647da5b6e6
at get_all_locks+120(javalock.c:1265)@0x2b647d945d39
at javaLockConvertLazyToThin+154(javalock.c:1760)@0x2b647d945f3b
at RJNI_jrockit_vm_Locks_checkAndTransferLazyLocked+460(javalock.c:2032)@0x2b647d94709d

 

With compressed references enabled:

at findNext+310(refiter.c:598)@0x2ad6c24520c6
at refIterGetNext2+59(refiter.c:387)@0x2ad6c245221c
at refIterGetNextObjRef+36(refiter.c:411)@0x2ad6c2452255
at triWorkChunkGetNext+132(roots.c:472)@0x2ad6c245df35
at ycProcessWorkChunk+62(ycgc.c:31)@0x2ad6c24ab8ef
at ycWorkerProcessRoots+200(ycgc.c:368)@0x2ad6c24abaa9
at mmGCWorkerThread+197(gcthreads.c:828)@0x2ad6c2319976
at thread_stub+377(lifecycle.c:809)@0x2ad6c23d3a5a
at start_thread+220()@0x3e6a20683d

  

With compressed references disabled:

at findNext+310(refiter.c:598)@0x2b38fd0c48f6
at refIterGetNext2+59(refiter.c:387)@0x2b38fd0c4a4c
at refIterGetNextObjRef+36(refiter.c:411)@0x2b38fd0c4a85
at triWorkChunkGetNext+132(roots.c:472)@0x2b38fd0d0995
at ycProcessWorkChunk+62(ycgc.c:31)@0x2b38fd11e55f
at ycWorkerProcessRoots+200(ycgc.c:368)@0x2b38fd11e719
at mmGCWorkerThread+197(gcthreads.c:828)@0x2b38fcf8c256
at thread_stub+377(lifecycle.c:809)@0x2b38fd046c3a
at start_thread+220()@0x372ce0683d
...
GC Status : OC is not running. Last finished OC was OC#32.
          : YC is currently running. This is YC#190.
...
Roots Dump Helper:
thread=0x10375d90
method=weblogic/work/RequestManager.executeIt(Lweblogic/work/WorkAdapter;)Z

 

Changes

 The issue is seen when introducing new bytecode instrumentation agents into JRockit JVMs.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms