JetBrains / lincheck

Framework for testing concurrent data structures
Mozilla Public License 2.0
545 stars 31 forks source link

JVM 21 support #265

Closed durban closed 4 months ago

durban commented 5 months ago

Currently lincheck doesn't seem to work on JVM 21:

[error] Exception in thread "main" java.lang.reflect.InvocationTargetException
[error]         at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
[error]         at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
[error]         at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
[error]         at org.jetbrains.kotlinx.lincheck.LinChecker.createVerifier(LinChecker.kt:129)
[error]         at org.jetbrains.kotlinx.lincheck.LinChecker.checkImpl(LinChecker.kt:68)
[error]         at org.jetbrains.kotlinx.lincheck.LinChecker.checkImpl$lincheck(LinChecker.kt:52)
[error]         at org.jetbrains.kotlinx.lincheck.LinChecker.check(LinChecker.kt:42)
[error]         at org.jetbrains.kotlinx.lincheck.LinChecker$Companion.check(LinChecker.kt:149)
[error]         at org.jetbrains.kotlinx.lincheck.LinChecker.check(LinChecker.kt)
[error]         at com.example.FooTest.main(FooTest.java:28)
[error] Caused by: java.lang.IllegalStateException: Cannot transform class com.example.FooTest
[error]         at org.jetbrains.kotlinx.lincheck.TransformationClassLoader.loadClass(TransformationClassLoader.java:149)
[error]         at org.jetbrains.kotlinx.lincheck.verifier.LTS.<init>(LTS.kt:47)
[error]         at org.jetbrains.kotlinx.lincheck.verifier.linearizability.LinearizabilityVerifier.<init>(LinearizabilityVerifier.kt:26)
[error]         at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
[error]         ... 9 more
[error] Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65
[error]         at org.objectweb.asm.ClassReader.<init>(ClassReader.java:199)
[error]         at org.objectweb.asm.ClassReader.<init>(ClassReader.java:180)
[error]         at org.objectweb.asm.ClassReader.<init>(ClassReader.java:166)
[error]         at org.objectweb.asm.ClassReader.<init>(ClassReader.java:298)
[error]         at org.jetbrains.kotlinx.lincheck.TransformationClassLoader.instrument(TransformationClassLoader.java:164)
[error]         at org.jetbrains.kotlinx.lincheck.TransformationClassLoader.loadClass(TransformationClassLoader.java:140)
[error]         ... 12 more

Tested with version 2.24.

ben-manes commented 5 months ago

There isn’t Java 20 support due to calling Thread.stop() either (https://github.com/JetBrains/lincheck/issues/210)

ndkoval commented 4 months ago

Hi! The issue should be fixed with #271 and #161. Please check the recent Licheck 2.25 release.