Skip to content

NullPointerException: Cannot invoke "com.oracle.truffle.api.nodes.DirectCallNode.call(Object[])" because "this.callNode" is null #1470

@arouel

Description

@arouel

We run multiple times a week into the following error when executing the Gradle task configClassesGatherImports:

> Task :load:configClassesGatherImports FAILED
gradle/actions: Writing build results to /runnertmp/_work/_temp/.gradle-actions/build-results/__github-actions-shared-1773737705533.json


FAILURE: Build failed with an exception.

[Incubating] Problems report is available at: file:///runnertmp/_work/steampipe/steampipe/build/reports/problems/problems-report.html
* What went wrong:
16 actionable tasks: 9 executed, 7 from cache
Execution failed for task ':load:configClassesGatherImports'.
> An unexpected error has occurred. Would you mind filing a bug report?
  Cmd+Double-click the link below to open an issue.
  Please copy and paste the entire error output into the issue's description.
  
  https://github.com/apple/pkl/issues/new


java.lang.NullPointerException%3A%20Cannot%20invoke%20%22com.oracle.truffle.api.nodes.DirectCallNode.call%28Object%5B%5D%29%22%20because%20%22this.callNode%22%20is%20null
  
  –– Pkl Error ––
  Cannot invoke "com.oracle.truffle.api.nodes.DirectCallNode.call(Object[])" because "this.callNode" is null
  
  106 | renderer =
        ^^^^^^^^
  at pkl.base#Module.output.renderer (https://github.com/apple/pkl/blob/0.31.0/stdlib/base.pkl#L106)
  
  131 | if (renderer is ValueRenderer)
            ^^^^^^^^
  at pkl.base#Module.output.text (https://github.com/apple/pkl/blob/0.31.0/stdlib/base.pkl#L131)
  
  Pkl 0.31.0 (Linux 6.12.66-88.122.amzn2023.aarch64, Java 25.0.2)
  
  java.lang.NullPointerException: Cannot invoke "com.oracle.truffle.api.nodes.DirectCallNode.call(Object[])" because "this.callNode" is null
  	at org.pkl.core.ast.expression.binary.LetExprNode.executeGeneric(LetExprNode.java:73)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNode.evalTypedObjectCached(TypeCheckedPropertyNode.java:54)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNodeGen.executeImpl(TypeCheckedPropertyNodeGen.java:76)
  	at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
  	at com.oracle.truffle.api.impl.DefaultCallTarget.call(DefaultCallTarget.java:118)
  	at com.oracle.truffle.api.impl.DefaultIndirectCallNode.call(DefaultIndirectCallNode.java:53)
  	at org.pkl.core.ast.expression.member.ReadSuperPropertyNode.executeGeneric(ReadSuperPropertyNode.java:67)
  	at org.pkl.core.ast.expression.literal.PropertiesLiteralNodeGen.executeGeneric(PropertiesLiteralNodeGen.java:239)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNode.evalTypedObjectCached(TypeCheckedPropertyNode.java:54)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNodeGen.executeAndSpecialize(TypeCheckedPropertyNodeGen.java:133)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNodeGen.executeImpl(TypeCheckedPropertyNodeGen.java:98)
  	at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
  	at com.oracle.truffle.api.impl.DefaultCallTarget.call(DefaultCallTarget.java:118)
  	at com.oracle.truffle.api.impl.DefaultIndirectCallNode.call(DefaultIndirectCallNode.java:53)
  	at org.pkl.core.runtime.VmUtils.doReadMember(VmUtils.java:358)
  	at org.pkl.core.runtime.VmUtils.readMemberOrNull(VmUtils.java:287)
  	at org.pkl.core.ast.expression.member.ReadPropertyNode.evalObject(ReadPropertyNode.java:75)
  	at org.pkl.core.ast.expression.member.ReadPropertyNodeGen.executeAndSpecialize(ReadPropertyNodeGen.java:125)
  	at org.pkl.core.ast.expression.member.ReadPropertyNodeGen.executeGeneric(ReadPropertyNodeGen.java:93)
  	at org.pkl.core.ast.expression.primary.ResolveVariableNode.executeGeneric(ResolveVariableNode.java:83)
  	at org.pkl.core.ast.type.TypeTestNode.executeBoolean(TypeTestNode.java:58)
  	at org.pkl.core.ast.expression.ternary.IfElseNode.evaluateCondition(IfElseNode.java:54)
  	at org.pkl.core.ast.expression.ternary.IfElseNode.executeGeneric(IfElseNode.java:47)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNode.evalTypedObjectCached(TypeCheckedPropertyNode.java:54)
  	at org.pkl.core.ast.member.TypeCheckedPropertyNodeGen.executeImpl(TypeCheckedPropertyNodeGen.java:76)
  	at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
  	at com.oracle.truffle.api.impl.DefaultCallTarget.call(DefaultCallTarget.java:97)
  	at com.oracle.truffle.api.nodes.IndirectCallNode$1.call(IndirectCallNode.java:96)
  	at org.pkl.core.runtime.VmUtils.doReadMember(VmUtils.java:358)
  	at org.pkl.core.runtime.VmUtils.readMemberOrNull(VmUtils.java:287)
  	at org.pkl.core.runtime.VmUtils.readMemberOrNull(VmUtils.java:250)
  	at org.pkl.core.runtime.VmUtils.readMember(VmUtils.java:230)
  	at org.pkl.core.runtime.VmUtils.readTextProperty(VmUtils.java:173)
  	at org.pkl.core.EvaluatorImpl.lambda$evaluateOutputText$3(EvaluatorImpl.java:151)
  	at org.pkl.core.EvaluatorImpl.lambda$doEvaluate$18(EvaluatorImpl.java:422)
  	at org.pkl.core.EvaluatorImpl.doEvaluate(EvaluatorImpl.java:367)
  	at org.pkl.core.EvaluatorImpl.doEvaluate(EvaluatorImpl.java:418)
  	at org.pkl.core.EvaluatorImpl.evaluateOutputText(EvaluatorImpl.java:147)
  	at org.pkl.cli.CliImportAnalyzer.render(CliImportAnalyzer.kt:74)
  	at org.pkl.cli.CliImportAnalyzer.doRun(CliImportAnalyzer.kt:33)
  	at org.pkl.commons.cli.CliCommand.run(CliCommand.kt:48)
  	at org.pkl.gradle.task.AnalyzeImportsTask.doRunTask(AnalyzeImportsTask.java:50)
  	at org.pkl.gradle.task.BasePklTask.withFallbackTruffleRuntime(BasePklTask.java:167)
  	at org.pkl.gradle.task.ModulesTask.runTask(ModulesTask.java:136)
  	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
  	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
  	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)

We observe the error since we use version 0.28.0 but it is still present in the most recent release 0.31.0.

When re-executing the Gradle task it typically succeeds.

Gradle Configuration

pkl {
    javaCodeGenerators {
        register("configClasses") {
            addGeneratedAnnotation = true
            val pklFiles = fileTree("src/main/resources") { include("AppConfig.pkl") }
            sourceModules.set(pklFiles)
            generateJavadoc.set(true)
        }
        register("testConfigClasses") {
            addGeneratedAnnotation = true
            val pklFiles = fileTree("src/test/resources") { include("*.pkl") }
            sourceModules.set(pklFiles)
            sourceSet = sourceSets.test
        }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions