[jboss-jira] [JBoss JIRA] (JASSIST-248) Constant pool index 268 is invalid

Shigeru Chiba (JIRA) issues at jboss.org
Tue Sep 22 11:46:01 EDT 2015


    [ https://issues.jboss.org/browse/JASSIST-248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13111350#comment-13111350 ] 

Shigeru Chiba commented on JASSIST-248:
---------------------------------------

Laurent, the problem is because the stub class calls a default method declared in an interface type as if it is an abstract method in that interface.  What generated this stub class?  The generator must be fixed.  If it largely depends on Javassist for the stub generation, I'm happy to fix it.

> Constant pool index 268 is invalid
> ----------------------------------
>
>                 Key: JASSIST-248
>                 URL: https://issues.jboss.org/browse/JASSIST-248
>             Project: Javassist
>          Issue Type: Bug
>    Affects Versions: 3.19.0-GA
>            Reporter: Laurent Pellegrino
>            Assignee: Shigeru Chiba
>              Labels: regression
>         Attachments: _StubLinkedList.class
>
>
> We are using Javassist for one of our open source projects since about 10 years. Recently, I have tried to upgrade to version 3.19 and 3.20. Unfortunately, with both versions, generated byte code seems to cause errors with the JVM.
> Below is the output:
> {code}
> Exception in thread "RestartDownNodesPolicy node status check" java.lang.VerifyError: Illegal type at constant pool entry 268 in class pa.stub.java.util._StubLinkedList
> Exception Details:
>   Location:
>     pa/stub/java/util/_StubLinkedList.replaceAll(Ljava/util/function/UnaryOperator;)V @43: invokespecial
>   Reason:
>     Constant pool index 268 is invalid
>   Bytecode:
>     0x0000000: 2ab4 00cc 9900 252a b400 0db2 002c 100b
>     0x0000010: 32c0 0028 04bd 00ce 5903 2b53 b200 26b8
>     0x0000020: 00d7 b900 dd02 0057 b12a 2bb7 010c b1  
>   Stackmap Table:
>     same_frame(@41)
> 	at java.lang.Class.forName0(Native Method)
> 	at java.lang.Class.forName(Class.java:264)
> 	at org.objectweb.proactive.core.mop.MOP.forName(MOP.java:155)
> 	at org.objectweb.proactive.core.mop.MOP.findStubConstructor(MOP.java:649)
> 	at org.objectweb.proactive.core.mop.MOP.createStubObject(MOP.java:822)
> 	at org.objectweb.proactive.core.mop.MOP.newInstance(MOP.java:338)
> 	at org.objectweb.proactive.core.mop.MOP.newInstance(MOP.java:196)
> 	at org.objectweb.proactive.core.body.proxy.AbstractBodyProxy.reifyAsAsynchronous(AbstractBodyProxy.java:277)
> 	at org.objectweb.proactive.core.body.proxy.AbstractBodyProxy.invokeOnBody(AbstractBodyProxy.java:154)
> 	at org.objectweb.proactive.core.body.proxy.AbstractBodyProxy.reify(AbstractBodyProxy.java:123)
> 	at pa.stub.org.ow2.proactive.resourcemanager.nodesource._StubNodeSource.getDownNodes(_StubNodeSource.java)
> 	at org.ow2.proactive.resourcemanager.nodesource.policy.RestartDownNodesPolicy$1.run(RestartDownNodesPolicy.java:92)
> 	at java.util.TimerThread.mainLoop(Timer.java:555)
> 	at java.util.TimerThread.run(Timer.java:505)
> {code}
> The issue seems related to default methods introduced in Java 8. Perhaps its not an issue with Javassist but to be honest I don't understand the exception.  However, I have noticed that using Javassist in version 3.18.2 solves the problem.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list