asm issueshttps://gitlab.ow2.org/asm/asm/-/issues2017-12-26T09:50:57Zhttps://gitlab.ow2.org/asm/asm/-/issues/317604Bug in AdviceAdapter.visitFieldInsn()2017-12-26T09:50:57ZtraskBug in AdviceAdapter.visitFieldInsn()```
Hi, I just wanted to report this issue I ran into:
Existing code:
case PUTFIELD:
popValue();
if (longOrDouble) {
popValue();
popValue();
}
break;
Should be:
case PUT...```
Hi, I just wanted to report this issue I ran into:
Existing code:
case PUTFIELD:
popValue();
if (longOrDouble) {
popValue();
popValue();
}
break;
Should be:
case PUTFIELD:
popValue();
popValue();
if (longOrDouble) {
popValue();
}
break;
Thanks,
Trask
```https://gitlab.ow2.org/asm/asm/-/issues/317586VerifyError caused by LocalVariablesSorter2018-02-24T09:42:16ZjemrVerifyError caused by LocalVariablesSorter```
The LocalVariablesSorter will sometimes produce incorrect frames causing verification error.
The following method, when compiled with the eclipse compiler, will cause VerifyError, if run through the
LocalVariablesSorter:
void sa...```
The LocalVariablesSorter will sometimes produce incorrect frames causing verification error.
The following method, when compiled with the eclipse compiler, will cause VerifyError, if run through the
LocalVariablesSorter:
void sample() throws Exception {
try (BufferedReader reader = new BufferedReader(new StringReader("1\n2\n3\n4\n"))) {
String line;
while ((line = reader.readLine()) != null) {
int columnidx = 0;
Integer.parseInt(line);
}
}
}
the above with "Bad local variable type", if commenting out the parseInt line, then with: "Inconsistent stackmap frames"
It seems the "changed" flag in the LocalVariablesSorter isn't set, even though something is remapped?
See attached zip for sample (includes .class files as compiled with eclipse compiler).
```https://gitlab.ow2.org/asm/asm/-/issues/317555NPE in MethodWriter.resizeInstructions()2017-12-26T10:00:47ZmarchofNPE in MethodWriter.resizeInstructions()```
ASM Version: 5.0.1
While working on a reproducer for issue 317551 I came across the following NPE
while creating a large method:
Exception in thread "main" java.lang.NullPointerException
at org.objectweb.asm.MethodWriter.resizeIns...```
ASM Version: 5.0.1
While working on a reproducer for issue 317551 I came across the following NPE
while creating a large method:
Exception in thread "main" java.lang.NullPointerException
at org.objectweb.asm.MethodWriter.resizeInstructions(MethodWriter.java:2709)
at org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1407)
at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1554)
at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1017)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:693)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:506)
at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:995)
at LargeMethodNPE.main(LargeMethodNPE.java:18)
Please find the reproducer attached.
Maybe I made a mistake using the visitor APIs, but a smaller version of the
same class (less NOP instructions) can be built and also loads into the JVM.
```https://gitlab.ow2.org/asm/asm/-/issues/317558Stack frame tag - wrong specification2017-12-26T10:00:33ZhenStack frame tag - wrong specification```
In class Reader under method readFrame
private int readFrame(int stackMap, boolean zip, boolean unzip,
Context frame)
{
..
..
..
if (zip)
{
tag = b[stackMap++] & 0xFF;
} else {
tag = MethodWri...```
In class Reader under method readFrame
private int readFrame(int stackMap, boolean zip, boolean unzip,
Context frame)
{
..
..
..
if (zip)
{
tag = b[stackMap++] & 0xFF;
} else {
tag = MethodWriter.FULL_FRAME;
frame.offset = -1;
}
..
..
}
Why are you assuming that if zip var is true then the frame tag is FULL_FRAME
?
The zip flag is being determined according to the following code located under
the method called readCode:
private void readCode(final MethodVisitor mv, final Context context, int u)
{
..
..
else if (FRAMES && "StackMap".equals(attrName)) {
if ((context.flags & SKIP_FRAMES) == 0) {
zip = false;
stackMap = u + 10;
stackMapSize = readInt(u + 4);
frameCount = readUnsignedShort(u + 8);
}
..
..
}
Running a degenerate method visitor on the attached class causing to the
following Exception:
java.lang.ArrayIndexOutOfBoundsException: 3
at org.objectweb.asm.ClassReader.readFrameType(ClassReader.java:2142)
at org.objectweb.asm.ClassReader.readFrame(Unknown Source)
at org.objectweb.asm.ClassReader.readCode(Unknown Source)
at org.objectweb.asm.ClassReader.readMethod(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
There is no full frame in the method StackMap (Output using javap):
StackMap: length = 0x5
00 03 18 07 07
You can see that the attribute_length is 3 and all the entries are less then
63, which means the frames should be tagged as same_frame
Attached is the relevant class
Thanks,
Hen
```https://gitlab.ow2.org/asm/asm/-/issues/317601Packaging problems in asm2017-12-26T09:52:12ZbriantoppingPackaging problems in asm```
While deploying asm, I found the library doing a dynamic load of
org.objectweb.asm.commons.AdviceAdapter. Interestingly, that code is in the source jar but not in the
binary. Further digging shows the class in asm-commons.
There ...```
While deploying asm, I found the library doing a dynamic load of
org.objectweb.asm.commons.AdviceAdapter. Interestingly, that code is in the source jar but not in the
binary. Further digging shows the class in asm-commons.
There are probably two problems here:
1) https://repo1.maven.org/maven2/org/ow2/asm/asm/5.0.4/asm-5.0.4.pom should have an optional scope
dependency from asm to asm-commons
2) The source for asm and it's source jar needs to be checked for 1:1 correlations between the two artifacts.
```https://gitlab.ow2.org/asm/asm/-/issues/317602Asmifier does not recognize null value for TypePath2017-12-26T09:51:51ZraphwAsmifier does not recognize null value for TypePath```
The Asmifier does not consider the possibility that a TypePath for a type
annotation can be null an renders incorrect example code.
A patch is attached.
``````
The Asmifier does not consider the possibility that a TypePath for a type
annotation can be null an renders incorrect example code.
A patch is attached.
```https://gitlab.ow2.org/asm/asm/-/issues/317553StaticInitMerger breaks interfaces2017-12-26T10:01:31ZhoescheleStaticInitMerger breaks interfaces```
With a chain of ClassReader->StaticInitMerger->ClassWriter interfaces like this
http://grepcode.com/file_/repo1.maven.org/maven2/net.java.dev.glazedlists/glazedlists_java15/1.8.0/ca/odell/glazedlists/util/concurrent/LockFactory.java/...```
With a chain of ClassReader->StaticInitMerger->ClassWriter interfaces like this
http://grepcode.com/file_/repo1.maven.org/maven2/net.java.dev.glazedlists/glazedlists_java15/1.8.0/ca/odell/glazedlists/util/concurrent/LockFactory.java/?v=source
are corrupted and the Java VM will complain about illegal modifiers for methods.
The scenario is the following:
Some interfaces have a static fields which are assigned values that require
method calls. In bytecode this non-trivial assignment is compiled to a <clinit>
(however explicit static initializers in interfaces are not allowed by the Java
compiler).
StaticInitMerger simply renames all static initializers it finds and calls them
all in the single static initializer it creates.
In the case of the mentioned interface this results in one additional
non-abstract method in the interface which is not allowed by the Java VM. To
fix this special case we might want to combine/inline all initializers into a
single one in order to fix this problem.
I know that fields in interfaces are considered as bad practice by many
developers but this unfortunately happens in quite a lot of libraries which I
cannot simply ignore/replace.
```https://gitlab.ow2.org/asm/asm/-/issues/317554Missing Java 8 support in ClassReader2017-12-26T10:01:12ZraffigMissing Java 8 support in ClassReader```
Regards version 5.0.3
In this method:
org.objectweb.asm.ClassReader.ClassReader(byte[], int, int)
There is a fragment:
if (readShort(off + 6) > Opcodes.V1_7) {
throw new IllegalArgumentException();
}
(...```
Regards version 5.0.3
In this method:
org.objectweb.asm.ClassReader.ClassReader(byte[], int, int)
There is a fragment:
if (readShort(off + 6) > Opcodes.V1_7) {
throw new IllegalArgumentException();
}
(lines 169-171)
It seems that support for Java 8 is missing here.
```https://gitlab.ow2.org/asm/asm/-/issues/317600Bad behavior of Type utility class with anonymously loaded classes2017-12-26T09:52:33ZraphwBad behavior of Type utility class with anonymously loaded classes```
Anonymous loaded classes (via sun.misc.Unsafe) have a different naming schema
where a name is called:
foo.Bar/12345
The utilities of the Type class do not properly account to this possibile
naming schema and do not return the right...```
Anonymous loaded classes (via sun.misc.Unsafe) have a different naming schema
where a name is called:
foo.Bar/12345
The utilities of the Type class do not properly account to this possibile
naming schema and do not return the right names for such classes.
```https://gitlab.ow2.org/asm/asm/-/issues/317626AnnotationNode incorrectly process array values in 'visit(final String name, ...2018-01-21T08:00:13ZkammererAnnotationNode incorrectly process array values in 'visit(final String name, final Object value)' method```
According to javadoc 'AnnotationNode.values' field contains only simple values
or lists of them, but not arrays (except enum case).
Java doc of 'AnnotationVisitor.visit(final String name, final Object value)'
says that it accepts arr...```
According to javadoc 'AnnotationNode.values' field contains only simple values
or lists of them, but not arrays (except enum case).
Java doc of 'AnnotationVisitor.visit(final String name, final Object value)'
says that it accepts arrays and in such case it's a shortcut for 'visitArray'
and array elements iteration.
AnnotationNode do nothing to process such shortcuts and as result writes arrays
of primitives to 'values' field.
Simple case to reproduce: pass AnnotationNode to ClassReader
```https://gitlab.ow2.org/asm/asm/-/issues/317587ArrayIndexOutOfBoundsException while reading a class file2017-12-26T09:53:34ZmetlosArrayIndexOutOfBoundsException while reading a class file```
I have a simple class reader that I am using to read the structure of a class.
I get an ArrayIndexOutOfBoundsException when trying to use this to read class
com.ibm.icu.impl.data.LocaleElements_zh__PINYIN from icu4j version 2.6.1
(ht...```
I have a simple class reader that I am using to read the structure of a class.
I get an ArrayIndexOutOfBoundsException when trying to use this to read class
com.ibm.icu.impl.data.LocaleElements_zh__PINYIN from icu4j version 2.6.1
(http://search.maven.org/#artifactdetails|com.ibm.icu|icu4j|2.6.1|jar).
In the attached Maven project the "test.class" is a class file of the above
mentioned class.
Repro steps:
unzip the attached reproducer.zip and run:
mvn package exec:java -Dexec.mainClass=Main
```https://gitlab.ow2.org/asm/asm/-/issues/317548Mistakes in API documentation of MethodVisitor and SignatureVisitor2017-12-26T10:02:12ZtrohovskyMistakes in API documentation of MethodVisitor and SignatureVisitor```
MethodVisitor
- visitParameterAnnotation is missing in the desciption of method calling order
- visitTryCatchAnnotation vs. current visitTryCatchBlockAnnotation
SignatureVisitor
- visitSuperclass vs. current visitSuperClass
``````
MethodVisitor
- visitParameterAnnotation is missing in the desciption of method calling order
- visitTryCatchAnnotation vs. current visitTryCatchBlockAnnotation
SignatureVisitor
- visitSuperclass vs. current visitSuperClass
```https://gitlab.ow2.org/asm/asm/-/issues/317545Asm eat linenumbers if there are several of them on one label2017-12-26T10:02:52ZkammererAsm eat linenumbers if there are several of them on one label```
Java bytecode allows to write several linenumbers on one label (see example
below) but asm keeps only one line. So it's impossible read and verify all
bytecode information using ClassReader.MethodVisitor
LineNumberTable:
...```
Java bytecode allows to write several linenumbers on one label (see example
below) but asm keeps only one line. So it's impossible read and verify all
bytecode information using ClassReader.MethodVisitor
LineNumberTable:
line 20: 0
line 21: 5
line 23: 27
line 20: 46
line 26: 46
line 27: 51
line 29: 72
line 26: 90
ClassReader.MethodVisitor.visitLineNumber say that label 46 corresponds only to
line 26 and skips entry for line 20: 46
```https://gitlab.ow2.org/asm/asm/-/issues/317547incorrect owner argument of ASM MethodWriter#visitFieldInsn when dealing with...2017-12-26T10:02:38Zyilongliincorrect owner argument of ASM MethodWriter#visitFieldInsn when dealing with static field```
Consider the following example:
public class Test extends Test2 {
public static void main(String[] args) {
staticVariable = true;
Test2.staticVariable = true;
}
}
class Test2 {
static boolean staticVaria...```
Consider the following example:
public class Test extends Test2 {
public static void main(String[] args) {
staticVariable = true;
Test2.staticVariable = true;
}
}
class Test2 {
static boolean staticVariable;
}
The owner argument in MethodWriter#visitFieldInsn(int opcode, String owner,
String name, String desc) for the first access of staticVariable is "Test" while
the second one is "Test2".
This doesn't look right to me. I am using ASM 5.02.
```https://gitlab.ow2.org/asm/asm/-/issues/317541Java 8 + hibernate validator = IllegalArgumentException2017-12-26T10:03:19ZmikecurwenJava 8 + hibernate validator = IllegalArgumentException```
I've include a small project which replicates the issue.
Using java 1.8.0_20 , asm 5.0.3 and hibernate validator 5.1.2.Final (see
pom.xml for other info).
The stacktrace is:
java.lang.IllegalArgumentException
at net.sf.cglib.a...```
I've include a small project which replicates the issue.
Using java 1.8.0_20 , asm 5.0.3 and hibernate validator 5.1.2.Final (see
pom.xml for other info).
The stacktrace is:
java.lang.IllegalArgumentException
at net.sf.cglib.asm.ClassReader.<init>(Unknown Source)
at net.sf.cglib.asm.ClassReader.<init>(Unknown Source)
at net.sf.cglib.asm.ClassReader.<init>(Unknown Source)
at
net.sf.cglib.proxy.BridgeMethodResolver.resolveAll(BridgeMethodResolver.java:61
)
at net.sf.cglib.proxy.Enhancer.emitMethods(Enhancer.java:911)
at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:498)
at
net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.ja
va:25)
at
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216
)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
at
org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:175)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:114)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:88)
at org.easymock.internal.MockBuilder.createMock(MockBuilder.java:206)
at org.easymock.internal.MockBuilder.createMock(MockBuilder.java:219)
at org.easymock.internal.MockBuilder.createMock(MockBuilder.java:188)
at
com.company.app.module.constraint.validator.FooValidatorNoJava8Test.createParti
alMock(FooValidatorNoJava8Test.java:38)
at
com.company.app.module.constraint.validator.FooValidatorNoJava8Test.testValid(F
ooValidatorNoJava8Test.java:25
```https://gitlab.ow2.org/asm/asm/-/issues/317560Method Remapping: InvokeDynamicInsn#name2018-04-15T13:14:15ZcalebMethod Remapping: InvokeDynamicInsn#name```
I'm currently writing an obfuscator supporting the java 8 language level (lambdas, default interfaces etc).
At the moment I'm focusing on method name obfuscation.
Here is the transformer along with the rest of the project
https://gi...```
I'm currently writing an obfuscator supporting the java 8 language level (lambdas, default interfaces etc).
At the moment I'm focusing on method name obfuscation.
Here is the transformer along with the rest of the project
https://github.com/RevTek/Revtek-ASM-Obfuscator/blob/master/com/revtek/rasmo/obfuscate/ScrambleMethods.java
Its entirely possible I'm completely mistaken and just haven't done everything properly.
Here is an example of where the instructions weren't transformed.
Source: https://gist.github.com/RevTek/8293ebbef263eb606d5f
Obfuscated Source: https://gist.github.com/RevTek/8624a686bab369bc56a3
Obfuscated Bytecode: https://gist.github.com/RevTek/74d1ea05739d4c879c7b#file-gistfile1-txt-L54
Obfuscated DangerousTask class
https://gist.github.com/RevTek/eb89dd460c60793bdf92
As you can see, other calls to the DangerousTask class are correctly transformed, except the InvokeDynamicInsn#name, it is
still referred to as "execute", it should be "ce"
I apologize for the sloppy layout of this post, its difficult to make it neat when there are a lot of resources needed to
show the problem.
```Remi ForaxRemi Foraxhttps://gitlab.ow2.org/asm/asm/-/issues/317539TypePath not adequately supporting types w/ >10 type arguments2017-12-26T10:03:36Zjhumphries131TypePath not adequately supporting types w/ >10 type arguments```
In ASM 5.0.3:
TypePath.fromString() and TypePath.toString() both describe path elements for navigating type arguments
of a parameterized type as a single decimal digit. This doesn't adequately support types that have > 10
type arg...```
In ASM 5.0.3:
TypePath.fromString() and TypePath.toString() both describe path elements for navigating type arguments
of a parameterized type as a single decimal digit. This doesn't adequately support types that have > 10
type arguments.
Looking at the javadoc and even the source doesn't reveal anything obvious about how values > 10th (e.g.
> '9') should be handled.
The source for TypePath.fromString() looks like it reads a sequence of decimal digits as a single "type
argument" path element. But then there's no obvious separator between multiple type argument path
elements (though the code looks like it would accept anything other than a decimal digit or ".", "*", or "]").
The source for TypePath.toString(), on the other hand, looks like it will not correctly handle values for type
argument indices > '9'. It simply concatenates adjacent path elements. So a path of:
type_argument(1), type_argument(0)
of a nested generic type is indistinguishable from the path:
type_argument(10)
of a generic type with >10 type arguments.
When using ASMifier to generate source code for a class, it looks like it is trying to use adjacent single
decimal digits for each path step (which won't actually work since fromString() will combine them into a
single step). If any single step has value > '9', then it inserts period separators (e.g. ".10.1" is the type
argument at index 11 and then 1 where as "101" is the type argument at index 1 then 0 then 1). However,
periods are defined in the toString() doc (and in the actual implementation code) to mean
nested/enclosed type path elements, not type arguments.
We can see the above ambiguity in action with the following sample code:
----
import java.io.PrintWriter;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.List;
import java.util.Map;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.util.ASMifier;
import org.objectweb.asm.util.TraceClassVisitor;
public class TypePathBug {
@Target(ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
@interface A {
}
class T<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> {
}
class U<X, Y, Z> extends T<X, Map<@A Y, Z>, X, Y, Z, X, Y, Z, X, Y, @A Z, X> {
}
public static void main(String args[]) throws Exception {
new ClassReader(U.class.getName().replace('.', '/')).accept(
new TraceClassVisitor(null, new ASMifier(),
new PrintWriter(System.out)), 0);
}
}
----
The resulting output generates code for the two @A annotations that is identical and thus
indistinguishable -- which means it cannot be correct since they are distinct/different type paths. Here is
the code generated for both type annotations:
{
av0 = cw.visitTypeAnnotation(285212416, TypePath.fromString(".10"), "LTypePathBug$A;", true);
av0.visitEnd();
}
----
Were I propose a fix: decimal path elements that indicate type parameter indices are terminated with a
semicolon. All of TypePath.toString(), TypePath.fromString(), and ASMifier would need to be updated. The
above ambiguous type path, ".10" would instead be represented as "1;0;" for the first occurrence of @A
and "10;" for the second. TypePath.fromString() can be lenient and not require ";" termination if it instead
encounters end-of-string, ".", "[", or "*".
```https://gitlab.ow2.org/asm/asm/-/issues/317538AnnotationNode in ASM 5.0.3 does not handle null returned from AnnotationVisi...2018-01-21T08:20:17ZLubomir BulejAnnotationNode in ASM 5.0.3 does not handle null returned from AnnotationVisitor correctly.```
AnnotationNode in ASM 5.0.3 does not handle null returned from
AnnotationVisitor correctly. While the documentation says that
AnnotationVisitor.visitArray(String) can return null , the
AnnotationNode.accept(AnnotationVisitor, String,...```
AnnotationNode in ASM 5.0.3 does not handle null returned from
AnnotationVisitor correctly. While the documentation says that
AnnotationVisitor.visitArray(String) can return null , the
AnnotationNode.accept(AnnotationVisitor, String, Object) method calls
AnnotationVisitor.visitEnd() on a potentially null visitor in the part that
handles List values.
Suggested fix to AnnotationNode.accept(AnnotationVisitor, String, Object):
...
} else if (value instanceof List) {
AnnotationVisitor v = av.visitArray(name);
if (v != null) {
List array = (List) value;
for (int j = 0; j < array.size(); ++j) {
accept(v, null, array.get(j));
}
v.visitEnd();
}
} else {
...
```https://gitlab.ow2.org/asm/asm/-/issues/317537Wrong tryCatch block sorting2017-12-26T10:04:02ZkammererWrong tryCatch block sorting```
TryCatchBlockSorter:
Comparator<TryCatchBlockNode> comp = new Comparator<TryCatchBlockNode>() {
public int compare(TryCatchBlockNode t1, TryCatchBlockNode t2) {
int len1 = blockLength(t1);
...```
TryCatchBlockSorter:
Comparator<TryCatchBlockNode> comp = new Comparator<TryCatchBlockNode>() {
public int compare(TryCatchBlockNode t1, TryCatchBlockNode t2) {
int len1 = blockLength(t1);
int len2 = blockLength(t2);
return len1 - len2;
}
private int blockLength(TryCatchBlockNode block) {
int startidx = instructions.indexOf(block.start);
int endidx = instructions.indexOf(block.end);
return endidx - startidx;
}
};
after node sorting node for default catch handler could occur before non
default one, same problem with hierarchy of exceptions more specified could
occur after general one in tryCatchBlock list.
Maybe best to compare hander indexies?
```https://gitlab.ow2.org/asm/asm/-/issues/317531Invalid lambda deserialization error after relocation of packages2018-05-19T16:08:14ZzarzykInvalid lambda deserialization error after relocation of packages```
Hi,
I'm having an issue with serializing & deserializing lambdas that were processed by asm: "Invalid lambda deserialization"
My environment:
I'm using java 8, version :
java version "1.8.0_05"
Java(TM) SE Runtime Environment (buil...```
Hi,
I'm having an issue with serializing & deserializing lambdas that were processed by asm: "Invalid lambda deserialization"
My environment:
I'm using java 8, version :
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
I'm using shadow plugin for gradle that uses asm for relocating packages and references in jars and/or class files.
I'm using the official version 0.8 from the link:
https://github.com/johnrengelman/shadow/tree/0.8
This version uses asm in version 3, but I overrode the asm dependency and set it to the freshest on Maven, which is 5.0.3:
org.ow2.asm:asm:5.0.3, org.ow2.asm:asm-commons:5.0
I created a sample project to easily reproduce the problem:
https://github.com/kzarzycki/asm-lambda-deserialization-error-test
When I run my test, I get an exception:
Exception in thread "main" java.io.IOException: unexpected exception type
at java.io.ObjectStreamClass.throwMiscException(ObjectStreamClass.java:1538)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1110)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1810)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at AsmTest.deserialize(AsmTest.java:36)
at AsmTest.main(AsmTest.java:21)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at java.lang.invoke.SerializedLambda.readResolve(SerializedLambda.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
... 5 more
Caused by: java.lang.IllegalArgumentException: Invalid lambda deserialization
at AsmTest.$deserializeLambda$(AsmTest.java:11)
... 15 more
I'll be grateful for your help with this issue!
```Remi ForaxRemi Forax