[ https://issues.apache.org/jira/browse/BCEL-367 ]
Katherine Hough deleted comment on BCEL-367: -------------------------------------- was (Author: JIRAUSER300711): ^This is the smallest example I could make.^ > java.lang.IndexOutOfBoundsException thrown for an ATHROW instruction on empty > stack > ----------------------------------------------------------------------------------- > > Key: BCEL-367 > URL: https://issues.apache.org/jira/browse/BCEL-367 > Project: Commons BCEL > Issue Type: Bug > Components: Verifier > Affects Versions: 6.7.0, 6.8.0 > Reporter: Katherine Hough > Priority: Minor > Attachments: Test-1.class, Test.class > > > A java.lang.IndexOutOfBoundsException is thrown when performing verification > pass 3B if the stack is empty before the ATHROW instruction. Expected outcome > is for a verification failure to be reported. > Output: > > {code:java} > Apache Commons BCEL > https://commons.apache.org/bcel > Now verifying: Test > Pass 1: > VERIFIED_OK > Passed verification. > Pass 2: > VERIFIED_OK > Passed verification. > Pass 3a, method number 0 ['static void x()']: > VERIFIED_OK > Passed verification. > Exception in thread "main" > org.apache.bcel.verifier.exc.AssertionViolatedException: INTERNAL ERROR: Some > RuntimeException occurred while verify()ing class 'Test', method 'static void > x()'. Original RuntimeException's stack trace: > --- > java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 0 > at > java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) > at > java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) > at > java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) > at java.base/java.util.Objects.checkIndex(Objects.java:361) > at java.base/java.util.ArrayList.get(ArrayList.java:427) > at > org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:180) > at > org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:172) > at > org.apache.bcel.verifier.structurals.InstConstraintVisitor.visitATHROW(InstConstraintVisitor.java:317) > at org.apache.bcel.generic.ATHROW.accept(ATHROW.java:47) > at > org.apache.bcel.generic.InstructionHandle.accept(InstructionHandle.java:84) > at > org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContextImpl.execute(ControlFlowGraph.java:198) > at > org.apache.bcel.verifier.structurals.Pass3bVerifier.circulationPump(Pass3bVerifier.java:164) > at > org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:386) > at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:98) > at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:166) > at org.apache.bcel.verifier.Verifier.verifyType(Verifier.java:90) > at org.apache.bcel.verifier.Verifier.main(Verifier.java:69) > --- > at > org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:398) > at org.apache.bcel.verifier.PassVerifier.verify(PassVerifier.java:98) > at org.apache.bcel.verifier.Verifier.doPass3b(Verifier.java:166) > at org.apache.bcel.verifier.Verifier.verifyType(Verifier.java:90) > at org.apache.bcel.verifier.Verifier.main(Verifier.java:69) > Caused by: java.lang.IndexOutOfBoundsException: Index -1 out of bounds for > length 0 > at > java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) > at > java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) > at > java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) > at java.base/java.util.Objects.checkIndex(Objects.java:361) > at java.base/java.util.ArrayList.get(ArrayList.java:427) > at > org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:180) > at > org.apache.bcel.verifier.structurals.OperandStack.peek(OperandStack.java:172) > at > org.apache.bcel.verifier.structurals.InstConstraintVisitor.visitATHROW(InstConstraintVisitor.java:317) > at org.apache.bcel.generic.ATHROW.accept(ATHROW.java:47) > at > org.apache.bcel.generic.InstructionHandle.accept(InstructionHandle.java:84) > at > org.apache.bcel.verifier.structurals.ControlFlowGraph$InstructionContextImpl.execute(ControlFlowGraph.java:198) > at > org.apache.bcel.verifier.structurals.Pass3bVerifier.circulationPump(Pass3bVerifier.java:164) > at > org.apache.bcel.verifier.structurals.Pass3bVerifier.do_verify(Pass3bVerifier.java:386) > ... 4 more > {code} > -- This message was sent by Atlassian Jira (v8.20.10#820010)