[
https://issues.jboss.org/browse/JASSIST-248?page=com.atlassian.jira.plugi...
]
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)