[
https://issues.jboss.org/browse/JASSIST-207?page=com.atlassian.jira.plugi...
]
Ben Romberg commented on JASSIST-207:
-------------------------------------
I guess this is because there is no StackMap Table to corrupt in the first place. Try it
with a method using local variables. For example, using
{code}
public int test() {
int i = 1;
return i;
}
{code}
will corrupt the local variable table.
If the Javassist compiler is skipping cleaning up the local variable table or stack map
table because of unreachable code, that would be a good explanation. As a library user I
would then expect a BadBytecode exception to be thrown during Javassist compile-time, and
not a non-related exception during class-loading time.
Inconsistent Stack Map when inserting throw Expression with Java 7
------------------------------------------------------------------
Key: JASSIST-207
URL:
https://issues.jboss.org/browse/JASSIST-207
Project: Javassist
Issue Type: Bug
Affects Versions: 3.18.0-GA
Reporter: Ben Romberg
Assignee: Shigeru Chiba
Priority: Critical
I wrote a unit-test for javassist, reproducing the issue:
{code}
public class ThrowExpressionCorruptsStackMapTableTest extends JvstTestRoot {
public ThrowExpressionCorruptsStackMapTableTest(String name) {
super(name);
}
public void testInsertLocalVars() throws Exception {
CtClass cc = sloader.get("test4.LocalVars");
CtMethod m1 = cc.getDeclaredMethod("run");
m1.insertBefore("throw new AssertionError((Object) \"assertion
error\");");
cc.writeFile();
Object obj = make(cc.getName());
assertEquals(10, invoke(obj, "run"));
}
}
{code}
Throws:
java.lang.VerifyError: Expecting a stack map frame in method test4.LocalVars.run()I at
offset 45
My use-case is almost the same, inserting a "throw AssertionError(...)"
expression with insertBefore. However, I get a slightly different error message:
Stack map does not match the one at exception handler 37 in method
timeofday.TimeOfDay.getSecond()I at offset 27
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira