DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24273>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=24273

ReferenceType.getFirstCommonSuperclass: Does not recognize UninitializedObjectType

           Summary: ReferenceType.getFirstCommonSuperclass: Does not
                    recognize UninitializedObjectType
           Product: BCEL
           Version: 5.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Main
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Here's a little gem that causes BCEL's verifier to crash:
(Compile the following with the bytecode assembler Jasmin)

.class public Test47
.super java/lang/Object

.method public foo(B)V
        .limit stack 10
        .limit locals 10
        
        iload_1
        ifne ELSE_0
                new java/io/BufferedInputStream
                goto ENDIF_0
        ELSE_0:
                new java/io/FilterInputStream
        ENDIF_0:
        pop
        
        return
.end method

The error generated is as follows:

Exception in thread "main" org.apache.bcel.verifier.exc.AssertionViolatedException: 
INTERNAL 
ERROR: Some RuntimeException occured while verify()ing class 'Test47', method 'public 
void 
foo(byte arg1)'. Original RuntimeException's stack trace:
---
java.lang.ClassCastException
        at 
org.apache.bcel.generic.ReferenceType.getFirstCommonSuperclass(ReferenceType.java:256)
        at 
org.apache.bcel.verifier.structurals.OperandStack.merge(OperandStack.java:254)
        at 
org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContextImpl.mergeInFrames(Cont
rolFlowGraph.java:246)
        at 
org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContextImpl.execute(ControlFlow
Graph.java:189)
        at 
org.apache.bcel.verifier.structurals.Pass3bVerifier.circulationPump(Pass3bVerifier.java:228)
        at 
org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:342)
        at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:108)
        at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:133)
        at ClassVerifier.verify(ClassVerifier.java:33)
        at ClassInfo.verify(ClassInfo.java:51)
        at Main.main(Main.java:7)
---

        at 
org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:356)
        at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:108)
        at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:133)
        at ClassVerifier.verify(ClassVerifier.java:33)
        at ClassInfo.verify(ClassInfo.java:51)
        at Main.main(Main.java:7)

It appears that ReferenceType.getFirstCommonSuperclass() is not designed to handle the 
org.apache.bcel.verifier.structurals.UninitializedObjectType ReferenceType that is 
used by BCEL's 
verifier.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to