Originally created by @HSMF on GitHub (Feb 11, 2024).
Problem
The pkl executable does not properly handle recursive objects.
Context
What are/were you trying to achieve?
Trying out pkl
What’s the impact of this bug/feature?
User Experience for the pkl binary is impacted
output of pkl --version
Pkl 0.25.2 (macOS 14.1, native)
Steps to reproduce
Create a file recursive.pkl with the following contents:
rec {
rec
}
run pkl eval recursive.pkl
Expected Behavior
A user-friendly error to be displayed
Actual Behavior
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, provided you can share it.
https://github.com/apple/pkl/issues/new
java.lang.StackOverflowError
–– Pkl Error ––
Stack overflow
Pkl 0.25.2 (macOS 14.1, native)
java.lang.StackOverflowError
at com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.newStackOverflowError0(StackOverflowCheckImpl.java:333)
at com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.newStackOverflowError(StackOverflowCheckImpl.java:329)
at com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.throwNewStackOverflowError(StackOverflowCheckImpl.java:309)
at com.oracle.svm.core.graal.jdk.SubstrateArraycopySnippets.doArraycopy(SubstrateArraycopySnippets.java:81)
at java.base@11.0.18/java.lang.String.getBytes(String.java:3192)
at java.base@11.0.18/java.lang.AbstractStringBuilder.putStringAt(AbstractStringBuilder.java:1667)
at java.base@11.0.18/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:539)
at java.base@11.0.18/java.lang.StringBuilder.append(StringBuilder.java:178)
at org.pkl.core.stdlib.AbstractRenderer.increaseIndent(AbstractRenderer.java:419)
at org.pkl.core.stdlib.base.PcfRenderer.startObject(PcfRenderer.java:314)
at org.pkl.core.stdlib.base.PcfRenderer.startDynamic(PcfRenderer.java:172)
at org.pkl.core.stdlib.AbstractRenderer.visitDynamic(AbstractRenderer.java:266)
at org.pkl.core.runtime.VmDynamic.accept(VmDynamic.java:92)
at org.pkl.core.runtime.VmValueVisitor.visit(VmValueVisitor.java:65)
at org.pkl.core.stdlib.AbstractRenderer.visit(AbstractRenderer.java:126)
at org.pkl.core.stdlib.base.PcfRenderer.visitStandaloneValue(PcfRenderer.java:227)
at org.pkl.core.stdlib.base.PcfRenderer.visitElement(PcfRenderer.java:213)
at org.pkl.core.stdlib.AbstractRenderer.doVisitElement(AbstractRenderer.java:234)
at org.pkl.core.stdlib.AbstractRenderer.lambda$visitDynamic$1(AbstractRenderer.java:283)
at org.pkl.core.runtime.VmObject.lambda$iterateAlreadyForcedMemberValues$1(VmObject.java:132)
at org.pkl.core.runtime.VmObject.iterateMembers(VmObject.java:148)
[...]
at org.pkl.core.runtime.VmObject.iterateAlreadyForcedMemberValues(VmObject.java:124)
at org.pkl.core.runtime.VmObject.forceAndIterateMemberValues(VmObject.java:117)
at org.pkl.core.stdlib.AbstractRenderer.visitDynamic(AbstractRenderer.java:273)
at org.pkl.core.runtime.VmDynamic.accept(VmDynamic.java:92)
at org.pkl.core.runtime.VmValueVisitor.visit(VmValueVisitor.java:65)
at org.pkl.core.stdlib.AbstractRenderer.visit(AbstractRenderer.java:126)
at org.pkl.core.stdlib.base.PcfRenderer.visitStandaloneValue(PcfRenderer.java:227)
at org.pkl.core.stdlib.base.PcfRenderer.visitElement(PcfRenderer.java:213)
at org.pkl.core.stdlib.AbstractRenderer.doVisitElement(AbstractRenderer.java:234)
at org.pkl.core.stdlib.AbstractRenderer.lambda$visitDynamic$1(AbstractRenderer.java:283)
at org.pkl.core.runtime.VmObject.lambda$iterateAlreadyForcedMemberValues$1(VmObject.java:132)
at org.pkl.core.runtime.VmObject.iterateMembers(VmObject.java:148)
at org.pkl.core.runtime.VmObject.iterateAlreadyForcedMemberValues(VmObject.java:124)
at org.pkl.core.runtime.VmObject.forceAndIterateMemberValues(VmObject.java:117)
at org.pkl.core.stdlib.AbstractRenderer.visitDynamic(AbstractRenderer.java:273)
at org.pkl.core.runtime.VmDynamic.accept(VmDynamic.java:92)
at org.pkl.core.runtime.VmValueVisitor.visit(VmValueVisitor.java:65)
at org.pkl.core.stdlib.AbstractRenderer.visit(AbstractRenderer.java:126)
at org.pkl.core.stdlib.base.PcfRenderer.visitStandaloneValue(PcfRenderer.java:227)
(Error Message is abbreviated as the actual backtrace is 1039 lines long)
Originally created by @HSMF on GitHub (Feb 11, 2024).
## Problem
The `pkl` executable does not properly handle recursive objects.
## Context
### What are/were you trying to achieve?
Trying out pkl
### What’s the impact of this bug/feature?
User Experience for the pkl binary is impacted
## output of `pkl --version`
```
Pkl 0.25.2 (macOS 14.1, native)
```
## Steps to reproduce
- Create a file `recursive.pkl` with the following contents:
```pkl
rec {
rec
}
```
- run `pkl eval recursive.pkl`
## Expected Behavior
A user-friendly error to be displayed
## Actual Behavior
```
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, provided you can share it.
https://github.com/apple/pkl/issues/new
java.lang.StackOverflowError
–– Pkl Error ––
Stack overflow
Pkl 0.25.2 (macOS 14.1, native)
java.lang.StackOverflowError
at com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.newStackOverflowError0(StackOverflowCheckImpl.java:333)
at com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.newStackOverflowError(StackOverflowCheckImpl.java:329)
at com.oracle.svm.core.graal.snippets.StackOverflowCheckImpl.throwNewStackOverflowError(StackOverflowCheckImpl.java:309)
at com.oracle.svm.core.graal.jdk.SubstrateArraycopySnippets.doArraycopy(SubstrateArraycopySnippets.java:81)
at java.base@11.0.18/java.lang.String.getBytes(String.java:3192)
at java.base@11.0.18/java.lang.AbstractStringBuilder.putStringAt(AbstractStringBuilder.java:1667)
at java.base@11.0.18/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:539)
at java.base@11.0.18/java.lang.StringBuilder.append(StringBuilder.java:178)
at org.pkl.core.stdlib.AbstractRenderer.increaseIndent(AbstractRenderer.java:419)
at org.pkl.core.stdlib.base.PcfRenderer.startObject(PcfRenderer.java:314)
at org.pkl.core.stdlib.base.PcfRenderer.startDynamic(PcfRenderer.java:172)
at org.pkl.core.stdlib.AbstractRenderer.visitDynamic(AbstractRenderer.java:266)
at org.pkl.core.runtime.VmDynamic.accept(VmDynamic.java:92)
at org.pkl.core.runtime.VmValueVisitor.visit(VmValueVisitor.java:65)
at org.pkl.core.stdlib.AbstractRenderer.visit(AbstractRenderer.java:126)
at org.pkl.core.stdlib.base.PcfRenderer.visitStandaloneValue(PcfRenderer.java:227)
at org.pkl.core.stdlib.base.PcfRenderer.visitElement(PcfRenderer.java:213)
at org.pkl.core.stdlib.AbstractRenderer.doVisitElement(AbstractRenderer.java:234)
at org.pkl.core.stdlib.AbstractRenderer.lambda$visitDynamic$1(AbstractRenderer.java:283)
at org.pkl.core.runtime.VmObject.lambda$iterateAlreadyForcedMemberValues$1(VmObject.java:132)
at org.pkl.core.runtime.VmObject.iterateMembers(VmObject.java:148)
[...]
at org.pkl.core.runtime.VmObject.iterateAlreadyForcedMemberValues(VmObject.java:124)
at org.pkl.core.runtime.VmObject.forceAndIterateMemberValues(VmObject.java:117)
at org.pkl.core.stdlib.AbstractRenderer.visitDynamic(AbstractRenderer.java:273)
at org.pkl.core.runtime.VmDynamic.accept(VmDynamic.java:92)
at org.pkl.core.runtime.VmValueVisitor.visit(VmValueVisitor.java:65)
at org.pkl.core.stdlib.AbstractRenderer.visit(AbstractRenderer.java:126)
at org.pkl.core.stdlib.base.PcfRenderer.visitStandaloneValue(PcfRenderer.java:227)
at org.pkl.core.stdlib.base.PcfRenderer.visitElement(PcfRenderer.java:213)
at org.pkl.core.stdlib.AbstractRenderer.doVisitElement(AbstractRenderer.java:234)
at org.pkl.core.stdlib.AbstractRenderer.lambda$visitDynamic$1(AbstractRenderer.java:283)
at org.pkl.core.runtime.VmObject.lambda$iterateAlreadyForcedMemberValues$1(VmObject.java:132)
at org.pkl.core.runtime.VmObject.iterateMembers(VmObject.java:148)
at org.pkl.core.runtime.VmObject.iterateAlreadyForcedMemberValues(VmObject.java:124)
at org.pkl.core.runtime.VmObject.forceAndIterateMemberValues(VmObject.java:117)
at org.pkl.core.stdlib.AbstractRenderer.visitDynamic(AbstractRenderer.java:273)
at org.pkl.core.runtime.VmDynamic.accept(VmDynamic.java:92)
at org.pkl.core.runtime.VmValueVisitor.visit(VmValueVisitor.java:65)
at org.pkl.core.stdlib.AbstractRenderer.visit(AbstractRenderer.java:126)
at org.pkl.core.stdlib.base.PcfRenderer.visitStandaloneValue(PcfRenderer.java:227)
```
(Error Message is abbreviated as the actual backtrace is 1039 lines long)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @HSMF on GitHub (Feb 11, 2024).
Problem
The
pklexecutable does not properly handle recursive objects.Context
What are/were you trying to achieve?
Trying out pkl
What’s the impact of this bug/feature?
User Experience for the pkl binary is impacted
output of
pkl --versionSteps to reproduce
recursive.pklwith the following contents:pkl eval recursive.pklExpected Behavior
A user-friendly error to be displayed
Actual Behavior
(Error Message is abbreviated as the actual backtrace is 1039 lines long)
@bioball commented on GitHub (Feb 13, 2024):
This is a known issue; thanks for the bug report.