Details
-
Bug
-
Resolution: Fixed
-
Low
-
8.0.0, 8.1.1
-
None
-
Severity 3 - Minor
-
Description
Issue Summary
Byteman 3.x doesn't work on Java 11. We'll need to bump byteman to a 4.x release to get JDK9+ support.
Steps to Reproduce
- Create a byteman rule, e.g:
RULE print encryption details CLASS com.atlassian.bamboo.crypto.instance.SecretEncryptionServiceImpl METHOD decrypt(String) COMPILE AT ENTRY IF TRUE DO org.apache.log4j.Logger.getLogger($CLASS).info("TEST"); ENDRULE
- Run $BAMBOO_INSTALL/tools/byteman/list-rules.sh
Expected Results
Byteman rule is validated.
Actual Results
The below exception is thrown in the console:
[bamboo@server7 byteman]$ ./list-rules.sh # File print-encryption.rule line 5 RULE print encryption details CLASS com.atlassian.bamboo.crypto.instance.SecretEncryptionServiceImpl METHOD decrypt(String) COMPILE AT ENTRY IF TRUE DO org.apache.log4j.Logger.getLogger($CLASS).info("TEST"); ENDRULE Transformed in: loader: ParallelWebappClassLoader context: ROOT delegate: false ----------> Parent Classloader: java.net.URLClassLoader@1175e2db trigger class: com.atlassian.bamboo.crypto.instance.SecretEncryptionServiceImpl threw java.lang.IllegalArgumentException java.lang.IllegalArgumentException at org.jboss.byteman.objectweb.asm.ClassReader.<init>(Unknown Source) at org.jboss.byteman.objectweb.asm.ClassReader.<init>(Unknown Source) at org.jboss.byteman.agent.check.BytecodeChecker.<init>(BytecodeChecker.java:43) at org.jboss.byteman.agent.Transformer.getClassChecker(Transformer.java:983) at org.jboss.byteman.agent.TransformContext.findLeastCommonSuper(TransformContext.java:470) at org.jboss.byteman.agent.TransformContext$1.getCommonSuperClass(TransformContext.java:447) at org.jboss.byteman.objectweb.asm.ClassWriter.a(Unknown Source) at org.jboss.byteman.objectweb.asm.Frame.a(Unknown Source) at org.jboss.byteman.objectweb.asm.Frame.a(Unknown Source) at org.jboss.byteman.objectweb.asm.MethodWriter.visitMaxs(Unknown Source) at org.jboss.byteman.objectweb.asm.tree.MethodNode.accept(Unknown Source) at org.jboss.byteman.objectweb.asm.commons.JSRInlinerAdapter.visitEnd(Unknown Source) at org.jboss.byteman.objectweb.asm.ClassReader.b(Unknown Source) at org.jboss.byteman.objectweb.asm.ClassReader.accept(Unknown Source) at org.jboss.byteman.objectweb.asm.ClassReader.accept(Unknown Source) at org.jboss.byteman.agent.TransformContext.transform(TransformContext.java:155) at org.jboss.byteman.agent.Transformer.transform(Transformer.java:756) at org.jboss.byteman.agent.Transformer.tryTransform(Transformer.java:823) at org.jboss.byteman.agent.Transformer.tryTransform(Transformer.java:795) at org.jboss.byteman.agent.Transformer.transform(Transformer.java:263) at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246) at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188) at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563) at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method) at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:167) at org.jboss.byteman.agent.Retransformer.installScript(Retransformer.java:151) at org.jboss.byteman.agent.TransformListener.handleScripts(TransformListener.java:351) at org.jboss.byteman.agent.TransformListener.loadScripts(TransformListener.java:274) at org.jboss.byteman.agent.TransformListener.handleConnection(TransformListener.java:226) at org.jboss.byteman.agent.TransformListener.run(TransformListener.java:156)
Workaround
Use Java 8.