Skip to content

LambdaDeserializer makes incorrect call to JDK's altMetafactory which raises an IllegalArgumentException on JDK 17 #12419

Closed
@SethTisue

Description

@SethTisue
✗ jabba install openjdk@17-ea+27=tgz+https://download.java.net/java/early_access/jdk17/27/GPL/openjdk-17-ea+27_macos-x64_bin.tar.gz 

✗ jabba use openjdk@17-ea+27a

✗ SV=2.12.14; scalac --scala-version $SV -d /tmp test/files/run/lambda-serialization.scala && scala --scala-version $SV -cp /tmp Test
java.io.InvalidObjectException: ReflectiveOperationException during deserialization
	at java.base/java.lang.invoke.SerializedLambda.readResolve(SerializedLambda.java:280)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1321)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2251)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1742)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
	at Test$.serializeDeserialize(lambda-serialization.scala:69)
	at Test$.$anonfun$allRealLambdasRoundTrip$1(lambda-serialization.scala:38)
	at Test$.$anonfun$allRealLambdasRoundTrip$1$adapted(lambda-serialization.scala:38)
	at scala.collection.immutable.List.map(List.scala:293)
	at Test$.allRealLambdasRoundTrip(lambda-serialization.scala:38)
	at Test$.main(lambda-serialization.scala:33)
	at Test.main(lambda-serialization.scala)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at scala.reflect.internal.util.RichClassLoader$.$anonfun$run$extension$1(ScalaClassLoader.scala:101)
	at scala.reflect.internal.util.RichClassLoader$.run$extension(ScalaClassLoader.scala:36)
	at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:29)
	at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:27)
	at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:46)
	at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:36)
	at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:35)
	at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:46)
	at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:73)
	at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:92)
	at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:103)
	at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:108)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.lang.invoke.SerializedLambda.readResolve(SerializedLambda.java:278)
	... 33 more
Caused by: java.lang.IllegalArgumentException: too many arguments
	at java.base/java.lang.invoke.LambdaMetafactory.altMetafactory(LambdaMetafactory.java:511)
	at scala.runtime.LambdaDeserializer$.makeCallSite$1(LambdaDeserializer.scala:105)
	at scala.runtime.LambdaDeserializer$.deserializeLambda(LambdaDeserializer.scala:114)
	at scala.runtime.LambdaDeserialize.deserializeLambda(LambdaDeserialize.java:38)
	at C.$deserializeLambda$(lambda-serialization.scala)
	... 38 more

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions