Truffle error on raspberry pi 2 (armv7l) since v0.28.0
- Dominant language
- Java
- Stars
- 11.5k
- Forks
- 402
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 20
Description
## system info
```
$ uname -a
Linux rpi 6.12.47+rpt-rpi-v7 #1 SMP Raspbian 1:6.12.47-1+rpt1 (2025-09-16) armv7l GNU/Linux
$ java --version
openjdk 21.0.8 2025-07-15
OpenJDK Runtime Environment (build 21.0.8+9-Raspbian-1rpi1)
OpenJDK Client VM (build 21.0.8+9-Raspbian-1rpi1, mixed mode, emulated-client, sharing)
```
## last working version
```
$ ~/downloads/pkl-cli-java-0.27.2.jar --version
Pkl 0.27.2 (Linux 6.12.47+rpt-rpi-v7, Java 21.0.8)
$ ~/downloads/pkl-cli-java-0.27.2.jar eval a.pkl
a = 5
```
## first broken version
```
$ ~/downloads/pkl-cli-java-0.28.0.jar --version
Pkl 0.28.0 (Linux 6.12.47+rpt-rpi-v7, Java 21.0.8)
$ ~/downloads/pkl-cli-java-0.28.0.jar eval a.pkl
Exception in thread "main" java.lang.InternalError: java.lang.reflect.InvocationTargetException
at com.oracle.truffle.runtime.ModulesSupport.loadModulesSupportLibrary(ModulesSupport.java:170)
at com.oracle.truffle.runtime.ModulesSupport.(ModulesSupport.java:59)
at com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess.createRuntime(HotSpotTruffleRuntimeAccess.java:84)
at com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess.getRuntime(HotSpotTruffleRuntimeAccess.java:75)
at com.oracle.truffle.api.Truffle.createRuntime(Truffle.java:145)
at com.oracle.truffle.api.Truffle$1.run(Truffle.java:176)
at com.oracle.truffle.api.Truffle$1.run(Truffle.java:174)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at com.oracle.truffle.api.Truffle.initRuntime(Truffle.java:174)
at com.oracle.truffle.api.Truffle.(Truffle.java:63)
at org.pkl.core.Platform.(Platform.java:48)
at org.pkl.core.util.IoUtils.isWindows(IoUtils.java:214)
at org.pkl.core.util.IoUtils.isWindowsAbsolutePath(IoUtils.java:77)
at org.pkl.commons.cli.commands.BaseOptions$Companion.parseModuleName(BaseOptions.kt:55)
at org.pkl.commons.cli.commands.ModulesCommand$special$$inlined$convert$default$1.invoke(Argument.kt:541)
at org.pkl.commons.cli.commands.ModulesCommand$special$$inlined$convert$default$1.invoke(Argument.kt:532)
at com.github.ajalt.clikt.parameters.arguments.ProcessedArgumentImpl.finalize(Argument.kt:205)
at com.github.ajalt.clikt.internal.FinalizationKt.iterateFinalization(Finalization.kt:90)
at com.github.ajalt.clikt.internal.FinalizationKt.finalizeParameters(Finalization.kt:63)
at com.github.ajalt.clikt.parsers.CommandLineParser.finalizeCommand(CommandLineParser.kt:153)
at com.github.ajalt.clikt.parsers.FlatInvocations$iterator$1.invokeSuspend$lambda$0(Invocation.kt:128)
at kotlin.sequences.SequencesKt___SequencesKt$onEach$1.invoke(_Sequences.kt:2175)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
at kotlin.sequences.SequenceBuilderIterator.next(SequenceBuilder.kt:138)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:120)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
at org.pkl.cli.Main.main$lambda$0(Main.kt:26)
at org.pkl.commons.cli.CliMainKt.cliMain(CliMain.kt:33)
at org.pkl.cli.Main.main(Main.kt:26)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:115)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.oracle.truffle.runtime.ModulesSupport.loadModulesSupportLibrary(ModulesSupport.java:163)
... 29 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.oracle.truffle.api.TruffleRuntime.notifyTransferToInterpreter()" because the return value of "com.oracle.truffle.api.Truffle.getRuntime()" is null
at com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate(CompilerDirectives.java:95)
at com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere(CompilerDirectives.java:548)
at com.oracle.truffle.api.InternalResource$CPUArchitecture.getCurrent(InternalResource.java:549)
at com.oracle.truffle.api.InternalResource$Env.getCPUArchitecture(InternalResource.java:192)
at com.oracle.truffle.runtime.LibTruffleAttachResource.basePath(LibTruffleAttachResource.java:77)
at com.oracle.truffle.runtime.LibTruffleAttachResource.versionHash(LibTruffleAttachResource.java:69)
at com.oracle.truffle.polyglot.InternalResourceCache.installResource(InternalResourceCache.java:222)
at com.oracle.truffle.polyglot.InternalResourceCache.installRuntimeResource(InternalResourceCache.java:190)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
... 31 more
```
## latest version (still broken)
```
$ java -jar ~/downloads/pkl-cli-0.30.2-all.jar eval a.pkl
Exception in thread "main" java.lang.InternalError: java.lang.ExceptionInInitializerError
at com.oracle.truffle.runtime.ModulesSupport.initializeModulesAccessor(ModulesSupport.java:178)
at com.oracle.truffle.runtime.ModulesSupport.(ModulesSupport.java:57)
at com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess.createRuntime(HotSpotTruffleRuntimeAccess.java:85)
at com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess.getRuntime(HotSpotTruffleRuntimeAccess.java:76)
at com.oracle.truffle.api.Truffle.createRuntime(Truffle.java:154)
at com.oracle.truffle.api.Truffle$1.run(Truffle.java:185)
at com.oracle.truffle.api.Truffle$1.run(Truffle.java:183)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at com.oracle.truffle.api.Truffle.initRuntime(Truffle.java:183)
at com.oracle.truffle.api.Truffle.(Truffle.java:64)
at org.pkl.core.Platform.(Platform.java:48)
at org.pkl.core.util.IoUtils.isWindows(IoUtils.java:214)
at org.pkl.core.util.IoUtils.isWindowsAbsolutePath(IoUtils.java:77)
at org.pkl.commons.cli.commands.BaseOptions$Companion.parseModuleName(BaseOptions.kt:57)
at org.pkl.commons.cli.commands.ModulesCommand$special$$inlined$convert$default$1.invoke(Argument.kt:541)
at org.pkl.commons.cli.commands.ModulesCommand$special$$inlined$convert$default$1.invoke(Argument.kt:532)
at com.github.ajalt.clikt.parameters.arguments.ProcessedArgumentImpl.finalize(Argument.kt:205)
at com.github.ajalt.clikt.internal.FinalizationKt.iterateFinalization(Finalization.kt:90)
at com.github.ajalt.clikt.internal.FinalizationKt.finalizeParameters(Finalization.kt:63)
at com.github.ajalt.clikt.parsers.CommandLineParser.finalizeCommand(CommandLineParser.kt:153)
at com.github.ajalt.clikt.parsers.FlatInvocations$iterator$1.invokeSuspend$lambda$0(Invocation.kt:128)
at kotlin.sequences.SequencesKt___SequencesKt.onEach$lambda$0$SequencesKt___SequencesKt(_Sequences.kt:2287)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:243)
at kotlin.sequences.SequenceBuilderIterator.next(SequenceBuilder.kt:138)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:120)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
at org.pkl.cli.Main.main$lambda$0(Main.kt:26)
at org.pkl.commons.cli.CliMainKt.cliMain(CliMain.kt:33)
at org.pkl.cli.Main.main(Main.kt:26)
Caused by: java.lang.ExceptionInInitializerError
at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160)
at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300)
at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(MethodHandleAccessorFactory.java:71)
at java.base/jdk.internal.reflect.ReflectionFactory.newMethodAccessor(ReflectionFactory.java:159)
at java.base/java.lang.reflect.Method.acquireMethodAccessor(Method.java:726)
at java.base/java.lang.reflect.Method.invoke(Method.java:577)
at com.oracle.truffle.runtime.ModulesSupport.initializeModulesAccessor(ModulesSupport.java:176)
... 29 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.oracle.truffle.api.TruffleRuntime.notifyTransferToInterpreter()" because the return value of "com.oracle.truffle.api.Truffle.getRuntime()" is null
at com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate(CompilerDirectives.java:95)
at com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere(CompilerDirectives.java:548)
at com.oracle.truffle.api.InternalResource$CPUArchitecture.getCurrent(InternalResource.java:576)
at com.oracle.truffle.api.InternalResource$Env.getCPUArchitecture(InternalResource.java:195)
at com.oracle.truffle.polyglot.JDKSupport$LibTruffleAttachResource.basePath(JDKSupport.java:738)
at com.oracle.truffle.polyglot.JDKSupport$LibTruffleAttachResource.versionHash(JDKSupport.java:733)
at com.oracle.truffle.polyglot.InternalResourceCache.installResource(InternalResourceCache.java:245)
at com.oracle.truffle.polyglot.InternalResourceCache.installRuntimeResource(InternalResourceCache.java:213)
at com.oracle.truffle.polyglot.JDKSupport.initializeModuleAccessor(JDKSupport.java:116)
at com.oracle.truffle.polyglot.JDKSupport.(JDKSupport.java:109)
... 37 more
```
## latest version, newer java
```
$ /usr/lib/jvm/java-25-openjdk-armhf/bin/java --version
openjdk 25.0.1 2025-10-21
OpenJDK Runtime Environment (build 25.0.1+8-Raspbian-1deb13u1)
OpenJDK Zero VM (build 25.0.1+8-Raspbian-1deb13u1, interpreted mode, sharing)
$ /usr/lib/jvm/java-25-openjdk-armhf/bin/java -jar ~/downloads/pkl-cli-0.30.2-all.jar eval a.pkl
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by com.sun.jna.Native in an unnamed module (file:/home/pi/downloads/pkl-cli-0.30.2-all.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
Exception in thread "main" java.lang.InternalError: java.lang.ExceptionInInitializerError
at com.oracle.truffle.runtime.ModulesSupport.initializeModulesAccessor(ModulesSupport.java:178)
at com.oracle.truffle.runtime.ModulesSupport.(ModulesSupport.java:57)
at com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess.createRuntime(HotSpotTruffleRuntimeAccess.java:85)
at com.oracle.truffle.runtime.hotspot.HotSpotTruffleRuntimeAccess.getRuntime(HotSpotTruffleRuntimeAccess.java:76)
at com.oracle.truffle.api.Truffle.createRuntime(Truffle.java:154)
at com.oracle.truffle.api.Truffle$1.run(Truffle.java:185)
at com.oracle.truffle.api.Truffle$1.run(Truffle.java:183)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:74)
at com.oracle.truffle.api.Truffle.initRuntime(Truffle.java:183)
at com.oracle.truffle.api.Truffle.(Truffle.java:64)
at org.pkl.core.Platform.(Platform.java:48)
at org.pkl.core.util.IoUtils.isWindows(IoUtils.java:214)
at org.pkl.core.util.IoUtils.isWindowsAbsolutePath(IoUtils.java:77)
at org.pkl.commons.cli.commands.BaseOptions$Companion.parseModuleName(BaseOptions.kt:57)
at org.pkl.commons.cli.commands.ModulesCommand$special$$inlined$convert$default$1.invoke(Argument.kt:541)
at org.pkl.commons.cli.commands.ModulesCommand$special$$inlined$convert$default$1.invoke(Argument.kt:532)
at com.github.ajalt.clikt.parameters.arguments.ProcessedArgumentImpl.finalize(Argument.kt:205)
at com.github.ajalt.clikt.internal.FinalizationKt.iterateFinalization(Finalization.kt:90)
at com.github.ajalt.clikt.internal.FinalizationKt.finalizeParameters(Finalization.kt:63)
at com.github.ajalt.clikt.parsers.CommandLineParser.finalizeCommand(CommandLineParser.kt:153)
at com.github.ajalt.clikt.parsers.FlatInvocations$iterator$1.invokeSuspend$lambda$0(Invocation.kt:128)
at kotlin.sequences.SequencesKt___SequencesKt.onEach$lambda$0$SequencesKt___SequencesKt(_Sequences.kt:2287)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:243)
at kotlin.sequences.SequenceBuilderIterator.next(SequenceBuilder.kt:138)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:120)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
at org.pkl.cli.Main.main$lambda$0(Main.kt:26)
at org.pkl.commons.cli.CliMainKt.cliMain(CliMain.kt:33)
at org.pkl.cli.Main.main(Main.kt:26)
Caused by: java.lang.ExceptionInInitializerError
at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1169)
at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:341)
at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newMethodAccessor(MethodHandleAccessorFactory.java:72)
at java.base/jdk.internal.reflect.ReflectionFactory.newMethodAccessor(ReflectionFactory.java:119)
at java.base/java.lang.reflect.Method.acquireMethodAccessor(Method.java:711)
at java.base/java.lang.reflect.Method.invoke(Method.java:562)
at com.oracle.truffle.runtime.ModulesSupport.initializeModulesAccessor(ModulesSupport.java:176)
... 29 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.oracle.truffle.api.TruffleRuntime.notifyTransferToInterpreter()" because the return value of "com.oracle.truffle.api.Truffle.getRuntime()" is null
at com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate(CompilerDirectives.java:95)
at com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere(CompilerDirectives.java:548)
at com.oracle.truffle.api.InternalResource$CPUArchitecture.getCurrent(InternalResource.java:576)
at com.oracle.truffle.api.InternalResource$Env.getCPUArchitecture(InternalResource.java:195)
at com.oracle.truffle.polyglot.JDKSupport$LibTruffleAttachResource.basePath(JDKSupport.java:738)
at com.oracle.truffle.polyglot.JDKSupport$LibTruffleAttachResource.versionHash(JDKSupport.java:733)
at com.oracle.truffle.polyglot.InternalResourceCache.installResource(InternalResourceCache.java:245)
at com.oracle.truffle.polyglot.InternalResourceCache.installRuntimeResource(InternalResourceCache.java:213)
at com.oracle.truffle.polyglot.JDKSupport.initializeModuleAccessor(JDKSupport.java:116)
at com.oracle.truffle.polyglot.JDKSupport.(JDKSupport.java:109)
... 37 more
```
Contributor guide
Research direction
Reproduce the failure with pkl-cli-0.30.2-all.jar and eval a.pkl on the Raspberry Pi 2 ARMv7 environment, comparing it with the working 0.27.2 JAR. Start at the stack-trace entry points in ModulesSupport, InternalResource.CPUArchitecture, and LibTruffleAttachResource, and compare Java 21 with Java 25. Done means the CLI evaluates a.pkl successfully on ARMv7.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100