Closed
Description
I have got basic Micronaut functions (unrelated to issue report #470 which relates to HTTP server apps) working on Graal. The following example shows the steps to get a Micronaut function running as a native image:
However, a more complex example found at https://github.com/micronaut-guides/micronaut-function-aws-lambda/tree/graal
Results in the following error:
error: Error encountered while parsing io.micronaut.inject.annotation.DefaultAnnotationMetadata.lambda$static$2(io.micronaut.core.annotation.AnnotationValue[], java.lang.Class, io.micronaut.core.convert.ConversionContext)
Parsing context:
parsing io.micronaut.inject.annotation.DefaultAnnotationMetadata$$Lambda$2156/1329223773.convert(Unknown Source)
parsing io.micronaut.core.convert.DefaultConversionService.convert(DefaultConversionService.java:125)
parsing io.micronaut.core.convert.ConversionService.convert(ConversionService.java:105)
parsing io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1243)
parsing io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:1727)
parsing io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:1497)
parsing io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:1477)
parsing io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:505)
parsing io.micronaut.function.executor.StreamFunctionExecutor.execute(StreamFunctionExecutor.java:83)
parsing io.micronaut.function.executor.StreamFunctionExecutor.execute(StreamFunctionExecutor.java:64)
parsing io.micronaut.function.executor.FunctionApplication.lambda$run$0(FunctionApplication.java:63)
parsing io.micronaut.function.executor.FunctionApplication$$Lambda$1931/1186147400.accept(Unknown Source)
parsing io.micronaut.function.executor.FunctionApplication.parseData(FunctionApplication.java:97)
parsing io.micronaut.function.executor.FunctionApplication.run(FunctionApplication.java:61)
parsing io.micronaut.function.executor.FunctionApplication.main(FunctionApplication.java:51)
parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:177)
parsing com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
Original error: jdk.vm.ci.common.JVMCIError: failed guarantee: DynamicNewArrayNode.element is constant, should have been canonicalized to NewArrayNode.
at jdk.vm.ci.common.JVMCIError.guarantee(JVMCIError.java:70)
at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder$NodeIterator.node(MethodTypeFlowBuilder.java:821)
at org.graalvm.compiler.phases.graph.PostOrderNodeIterator.apply(PostOrderNodeIterator.java:106)
at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:396)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:346)
at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:502)
at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:174)
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
To reproduce the steps are:
git clone https://github.com/micronaut-guides/micronaut-function-aws-lambda.git
cd micronaut-function-aws-lambda/complete/vies-vat-validator
./gradlew run # Don't worry if this fails with an error
./gradlew assemble
./build-native-image.sh
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
cstancu commentedon Aug 31, 2018
@graemerocher did you forget to push
build-native-image.sh
? Looking at the stack trace I think it is safe to remove theJVMCIError.guarantee()
line that causes the issue. That guarantee was just a sanity check that doesn't hold anymore due to changes inDynamicNewArrayNode.canonical()
.graemerocher commentedon Sep 3, 2018
@cstancu Sorry missed a step, you have to checkout the
graal
branch of the repo:Does your comment above mean the issue will be resolved in the next version of Graal?
graemerocher commentedon Sep 4, 2018
Fixed in 1.0 rc6 it seems.