Two java processes read the same class file at the same time. When the second process is instrumented, an instrumentation conflict error occurs.
Caused by: java.lang.IllegalStateException: Cannot process instrumented class ext/mt/lion/Environment. Please supply original non-instrumented classes.
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.core.internal.instr.InstrSupport.assertNotInstrumented(InstrSupport.java:238)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.core.internal.instr.ClassInstrumenter.visitField(ClassInstrumenter.java:56)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.asm.ClassVisitor.visitField(ClassVisitor.java:287)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.asm.ClassReader.readField(ClassReader.java:907)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.asm.ClassReader.accept(ClassReader.java:683)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.asm.ClassReader.accept(ClassReader.java:400)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.core.instr.Instrumenter.instrument(Instrumenter.java:89)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.core.instr.Instrumenter.instrument(Instrumenter.java:107)
INFO : wt.system.err wcadmin - ... 24 more
INFO : wt.system.err wcadmin - java.lang.instrument.IllegalClassFormatException: Error while instrumenting ext/mt/lion/Environment$Appenv.
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.CoverageTransformer.transform(CoverageTransformer.java:95)
INFO : wt.system.err wcadmin - at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
INFO : wt.system.err wcadmin - at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
INFO : wt.system.err wcadmin - at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
INFO : wt.system.err wcadmin - at java.base/java.lang.ClassLoader.defineClass1(Native Method)
INFO : wt.system.err wcadmin - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
INFO : wt.system.err wcadmin - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
INFO : wt.system.err wcadmin - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
INFO : wt.system.err wcadmin - at ext.mt.lion.Environment.loadAppenv(Environment.java:153)
INFO : wt.system.err wcadmin - at ext.mt.lion.Environment.<clinit>(Environment.java:234)
INFO : wt.system.err wcadmin - at ext.mt.lion.LionUtil.batchGetLionValue(LionUtil.java:68)
INFO : wt.system.err wcadmin - at ext.mt.lion.LionQueue.execute(LionQueue.java:80)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
INFO : wt.system.err wcadmin - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO : wt.system.err wcadmin - at java.base/java.lang.reflect.Method.invoke(Method.java:566)
INFO : wt.system.err wcadmin - at wt.queue.ScheduleQueueEntry.execute(ScheduleQueueEntry.java:264)
INFO : wt.system.err wcadmin - at wt.queue.ScheduleQueue.execEntry(ScheduleQueue.java:344)
INFO : wt.system.err wcadmin - at wt.queue.ScheduleQueue.execEntries(ScheduleQueue.java:465)
INFO : wt.system.err wcadmin - at wt.queue.ScheduleQueueThread.processReadyEntries(ScheduleQueueThread.java:284)
INFO : wt.system.err wcadmin - at wt.queue.ScheduleQueueThread.run(ScheduleQueueThread.java:92)
INFO : wt.system.err wcadmin - Caused by: java.io.IOException: Error while instrumenting ext/mt/lion/Environment$Appenv.
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.core.instr.Instrumenter.instrumentError(Instrumenter.java:160)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.core.instr.Instrumenter.instrument(Instrumenter.java:109)
INFO : wt.system.err wcadmin - at org.jacoco.agent.rt.internal_ff34e40.CoverageTransformer.transform(CoverageTransformer.java:92)
INFO : wt.system.err wcadmin - ... 25 more
Theoretically, the two processes read class files separately. Logically, this problem should not occur.
I expect the second process instrumentation to succeed