quarkus: `hibernate-orm-panache-kotlin`, `resteasy-reactive-kotlin/standard`, `kotlin-serialization`, and `rest-client-reactive-kotlin-serialization` fail in native with latest GraalVM 22.3-dev build

Describe the bug

hibernate-orm-panache-kotlin quarkus integration test fails with latest GraalVM CE dev build in native mode with:

========================================================================================================================
GraalVM Native Image: Generating 'quarkus-integration-test-hibernate-orm-panache-kotlin-999-SNAPSHOT-runner' (executable)...
========================================================================================================================
[1/7] Initializing...                                                                                   (14.0s @ 0.26GB)
 Version info: 'GraalVM 22.3.0-dev Java 17 CE'
 Java version info: '17.0.3+7'
 C compiler: gcc (redhat, x86_64, 12.1.1)
 Garbage collector: Serial GC
 8 user-specific feature(s)
 - io.quarkus.caffeine.runtime.graal.CacheConstructorsFeature
 - io.quarkus.hibernate.orm.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.hibernate.Version, org.hibernate.annotations.common.Version, org.hibernate.dialect.Dialect] categories
 - io.quarkus.runner.Feature: Auto-generated class by Quarkus from the existing extensions
 - io.quarkus.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.jboss.threads] categories
 - io.quarkus.runtime.graal.ResourcesFeature: Register each line in META-INF/quarkus-native-resources.txt as a resource on Substrate VM
 - org.graalvm.home.HomeFinderFeature: Finds GraalVM paths and its version number
 - org.hibernate.graalvm.internal.GraalVMStaticAutofeature
 - org.hibernate.graalvm.internal.QueryParsingSupport
[2/7] Performing analysis...  [*]                                                                       (22.5s @ 2.19GB)
  13,309 (88.68%) of 15,008 classes reachable
  17,786 (56.27%) of 31,610 fields reachable
  55,347 (60.25%) of 91,868 methods reachable
     634 classes,   137 fields, and 2,087 methods registered for reflection

Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1.invoke() 
Parsing context:
   at kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1.invoke(KCallableImpl.kt:41)
   at kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1.invoke(KCallableImpl.kt:40)
   at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke(ReflectProperties.java:93)
   at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(ReflectProperties.java:32)
   at kotlin.reflect.jvm.internal.KClassImpl$Data.getAllMembers(KClassImpl.kt:177)
   at kotlin.reflect.jvm.internal.KClassImpl.getMembers(KClassImpl.kt:195)
   at kotlin.reflect.full.KClasses.getFunctions(KClasses.kt:89)
   at kotlin.reflect.jvm.ReflectJvmMapping.getKotlinFunction(ReflectJvmMapping.kt:136)
   at com.fasterxml.jackson.module.kotlin.KotlinNamesAnnotationIntrospector.findKotlinParameterName(KotlinNamesAnnotationIntrospector.kt:118)
   at com.fasterxml.jackson.module.kotlin.KotlinNamesAnnotationIntrospector.findImplicitPropertyName(KotlinNamesAnnotationIntrospector.kt:40)
   at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:531)
   at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collectAll(POJOPropertiesCollector.java:421)
   at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getPropertyMap(POJOPropertiesCollector.java:386)
   at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getProperties(POJOPropertiesCollector.java:233)
   at com.fasterxml.jackson.databind.introspect.BasicBeanDescription._properties(BasicBeanDescription.java:164)
   at com.fasterxml.jackson.databind.introspect.BasicBeanDescription.findProperties(BasicBeanDescription.java:239)
   at com.fasterxml.jackson.databind.jsontype.impl.AsDeductionTypeDeserializer.buildFingerprints(AsDeductionTypeDeserializer.java:70)
   at com.fasterxml.jackson.databind.jsontype.impl.AsDeductionTypeDeserializer.<init>(AsDeductionTypeDeserializer.java:48)
   at com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder.buildTypeDeserializer(StdTypeResolverBuilder.java:166)
   at com.fasterxml.jackson.databind.DeserializationConfig.findTypeDeserializer(DeserializationConfig.java:967)
   at com.fasterxml.jackson.databind.deser.BeanDeserializerBase._findDelegateDeserializer(BeanDeserializerBase.java:696)
   at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:630)
   at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:294)
   at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
   at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
   at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:642)
   at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:4805)
   at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4646)
   at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2831)
   at io.quarkus.vertx.runtime.jackson.QuarkusJacksonJsonCodec.fromParser(QuarkusJacksonJsonCodec.java:125)
   at io.quarkus.vertx.runtime.jackson.QuarkusJacksonJsonCodec.fromString(QuarkusJacksonJsonCodec.java:95)
   at io.vertx.core.json.JsonObject.fromJson(JsonObject.java:944)
   at io.vertx.core.json.JsonObject.<init>(JsonObject.java:51)
   at io.vertx.core.impl.HAManager.checkQuorum(HAManager.java:369)
   at io.vertx.core.impl.HAManager.init(HAManager.java:153)
   at io.vertx.core.impl.VertxImpl.lambda$initializeHaManager$6(VertxImpl.java:263)
   at io.vertx.core.impl.VertxImpl$$Lambda$1500/0x00000007c2b2b7f0.handle(Unknown Source)
   at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141)
   at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
   at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
   at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
   at io.vertx.core.Promise.complete(Promise.java:66)
   at io.vertx.core.impl.future.PromiseImpl.operationComplete(PromiseImpl.java:65)
   at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
   at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
   at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
   at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
   at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
   at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
   at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
   at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
   at io.netty.channel.AbstractChannel$CloseFuture.setClosed(AbstractChannel.java:1164)
   at io.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:758)
   at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:731)
   at io.netty.channel.AbstractChannel$AbstractUnsafe.handleWriteError(AbstractChannel.java:950)
   at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:933)
   at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354)
   at io.netty.channel.nio.AbstractNioByteChannel$1.run(AbstractNioByteChannel.java:54)
   at java.lang.Shutdown.runHooks(Shutdown.java:130)
   at java.lang.Shutdown.exit(Shutdown.java:173)
   at java.lang.Runtime.exit(Runtime.java:115)
   at java.lang.System.exit(System.java:1860)
   at com.oracle.svm.core.graal.snippets.CEntryPointSnippets.initializeIsolate(CEntryPointSnippets.java:313)

	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:153)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:104)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:83)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraph(MethodTypeFlow.java:65)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultSpecialInvokeTypeFlow.onObservedUpdate(DefaultSpecialInvokeTypeFlow.java:61)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:558)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:488)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Discovered a type for which getDeclaringClass0 cannot be called: kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1$invoke$$inlined$sortBy$1. This error is reported at image build time because class kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1$invoke$$inlined$sortBy$1 is registered for linking at image build time by command line
	at parsing kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1.invoke(KCallableImpl.kt:221)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2518)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.throwParserError(SharedGraphBuilderPhase.java:110)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3379)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.handleBytecodeBlock(BytecodeParser.java:3331)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3176)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:1138)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:1030)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:97)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase.run(SharedGraphBuilderPhase.java:84)
	at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.run(Phase.java:49)
	at jdk.internal.vm.compiler/org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:446)
	at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
	at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.AnalysisParsedGraph.parseBytecode(AnalysisParsedGraph.java:135)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisMethod.ensureGraphParsed(AnalysisMethod.java:685)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:168)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:343)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:93)
	... 13 more
Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Discovered a type for which getDeclaringClass0 cannot be called: kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1$invoke$$inlined$sortBy$1. This error is reported at image build time because class kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1$invoke$$inlined$sortBy$1 is registered for linking at image build time by command line
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.SVMHost.handleLinkageError(SVMHost.java:424)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.SVMHost.getDeclaringClass(SVMHost.java:410)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.SVMHost.createHub(SVMHost.java:398)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.SVMHost.registerType(SVMHost.java:244)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:302)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:212)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.lookupType(WrappedConstantPool.java:209)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.lookupType(BytecodeParser.java:4178)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.genNewInstance(BytecodeParser.java:4457)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5239)
	at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3371)
	... 28 more
Caused by: java.lang.IncompatibleClassChangeError: kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1 and kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1$invoke$$inlined$sortBy$1 disagree on InnerClasses attribute
	at java.base/java.lang.Class.getDeclaringClass0(Native Method)
	at java.base/jdk.internal.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.SVMHost.getDeclaringClass(SVMHost.java:407)

Expected behavior

Native image build works.

Actual behavior

Native image build fails with:

java.lang.IncompatibleClassChangeError: kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1 and kotlin.reflect.jvm.internal.KCallableImpl$_parameters$1$invoke$$inlined$sortBy$1

How to Reproduce?

Steps to reproduce:

  1. Download the latest 22.3.0-dev GraalVM CE build. For example from here: https://github.com/graalvm/graalvm-ce-dev-builds/releases/tag/22.3.0-dev-20220816_0019
  2. Use it as GRAALVM_HOME
  3. Run the liquibase-mongodb integration test:
./mvnw -Dnative -pl integration-tests/hibernate-orm-panache-kotlin -Dtest-containers -Dstart-containers -Dnative.surefire.skip -Dformat.skip -Dno-descriptor-tests -Dlog.level=ALL clean verify -Dquarkus.native.container-build=false

Output of uname -a or ver

No response

Output of java -version

11 or 17 based GraalVM (doesn’t matter)

GraalVM version (if different from Java)

22.3.0-dev

Quarkus version or git rev

8764ba4591622a676ec02f4c3cb235cac2264b14

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

This seems to be related to this GraalVM change: https://github.com/oracle/graal/commit/ce3d101fba368cdb4bd8eebad770e5c59c8aa57a

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 22 (21 by maintainers)

Most upvoted comments

The tests are now passing!