Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-21569

Byteman 3.x doesn't work on Java 11

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • 8.1.2, 8.0.6, 8.2.0
    • 8.0.0, 8.1.1
    • Installation
    • None

    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

      1. 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
        
      1. 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.

      Attachments

        Issue Links

          Activity

            People

              achystoprudov Alexey Chystoprudov
              jowen@atlassian.com Jeremy Owen
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: