Uploaded image for project: 'Byteman'
  1. Byteman
  2. BYTEMAN-270

Legacy 1.5 or earlier code with JSR/RET breaks when target methods employ try finally interleaved in nested synchronized blocks

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 2.2.0
    • Trigger Injection
    • None
    • bytecode transform of mysql driver

      a simple rule fails to inject on Mysql driver

      RULE Execute SQL Statement
      CLASS com.mysql.jdbc.StatementImpl
      METHOD executeQuery
      AT ENTRY
      IF TRUE
      DO traceln("Execute SQL Called with:" + $1);
      ENDRULE

      working with lib mysql-connector-java-5.1.30-bin.jar

      the error I get is

      org.jboss.byteman.agent.Transformer : unexpected error injecting trigger for rule Execute SQL Statement into class com.mysql.jdbc.StatementImpl
      java.lang.NullPointerException
      java.lang.NullPointerException
      at org.jboss.byteman.agent.adapter.cfg.CFG.computeContainment(CFG.java:1108)
      at org.jboss.byteman.agent.adapter.cfg.CFG.carryForward(CFG.java:962)
      at org.jboss.byteman.agent.adapter.cfg.CFG.split(CFG.java:1222)
      at org.jboss.byteman.agent.adapter.RuleTriggerMethodAdapter.visitInsn(RuleTriggerMethodAdapter.java:654)
      at org.jboss.byteman.agent.adapter.EntryTriggerAdapter$EntryTriggerMethodAdapter.visitInsn(EntryTriggerAdapter.java:104)
      at org.jboss.byteman.objectweb.asm.tree.InsnNode.accept(Unknown Source)
      at org.jboss.byteman.objectweb.asm.tree.InsnList.accept(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.accept(Unknown Source)
      at org.jboss.byteman.objectweb.asm.ClassReader.accept(Unknown Source)
      at org.jboss.byteman.agent.TransformContext.transform(TransformContext.java:150)
      at org.jboss.byteman.agent.Transformer.transform(Transformer.java:730)
      at org.jboss.byteman.agent.Transformer.tryTransform(Transformer.java:798)
      at org.jboss.byteman.agent.Transformer.tryTransform(Transformer.java:769)
      at org.jboss.byteman.agent.Transformer.transform(Transformer.java:250)
      at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:424)
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
      at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
      at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
      at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
      at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
      at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
      at java.sql.DriverManager.getConnection(DriverManager.java:579)
      at java.sql.DriverManager.getConnection(DriverManager.java:221)
      at TestStatement.main(TestStatement.java:17)

        1. testStatement.btm
          0.2 kB
          Dan Shapiro
        2. TestStatement.java
          0.6 kB
          Dan Shapiro
        3. TestStatement.java
          0.7 kB
          Dan Shapiro

              rhn-engineering-adinn Andrew Dinn
              donshop11 Dan Shapiro (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: