cue-lang / cue

The home of the CUE language! Validate and define text-based and dynamic configuration
https://cuelang.org
Apache License 2.0
5.01k stars 283 forks source link

tools/flow: stack overflow with recursive (terminating) structure #2534

Open myitcv opened 1 year ago

myitcv commented 1 year ago

What version of CUE are you using (cue version)?

$ cue version
cue version v0.0.0-20230809093522-99e8578ac45e

go version go1.20.6
      -buildmode exe
       -compiler gc
     CGO_ENABLED 1
          GOARCH arm64
            GOOS linux
             vcs git
    vcs.revision 99e8578ac45e5e7e6ebf25794303bc916744c0d3
        vcs.time 2023-08-09T09:35:22Z
    vcs.modified false

Does this issue reproduce with the latest release?

Yes

What did you do?

A fairly minimal reproducer:

go mod tidy
go run cuelang.org/go/cmd/cue cmd genworkflows
cmp workflow1.txt workflow1.txt.golden

-- go.mod --
module mod.com

require cuelang.org/go v0.5.0
-- tools.go --
// +build tools

package tools

import _ "cuelang.org/go/cmd/cue"
-- ci_tool.cue --
package workflows

import (
    "tool/file"
    "encoding/yaml"
)

command: genworkflows: {
    for f, w in workflows {
        "\(f)": file.Create & {
            filename: f + ".txt"
            contents: yaml.Marshal(w)
        }
    }
}
-- workflow1.cue --
package workflows

import (
    "json.schemastore.org/github"
)

_#job:  ((github.#Workflow & {}).jobs & {x: _}).x
_#step: ((_#job & {steps:                   _}).steps & [_])[0]

workflows: workflow1: {
    jobs: {
        workflow1_job1: {
            "runs-on": "ubuntu-latest"
            steps: [
                _#step & {
                    run: ""
                },
            ]
        }
    }
}
-- cue.mod/module.cue --
module: "mod.com"
-- cue.mod/pkg/json.schemastore.org/github/github-workflow.cue --
package github

#Workflow: {
    jobs: [string]: #normalJob | #reusableWorkflowCallJob

    #configuration: [...#configuration]

    #reusableWorkflowCallJob: {}

    #normalJob: {
        steps?: [...{
            run?:                 string
        }]

        strategy?: {
            matrix: [string]: [...#configuration]
        }
    }
}
-- workflow1.txt.golden --
jobs:
  workflow1_job1:
    runs-on: ubuntu-latest
    steps:
      - run: ""

What did you expect to see?

Passing test.

What did you see instead?

> go run cuelang.org/go/cmd/cue cmd genworkflows
[stderr]
runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0x4020800340 stack=[0x4020800000, 0x4040800000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x8b93af?, 0xeb3660?})
        /home/myitcv/gos/src/runtime/panic.go:1047 +0x40 fp=0xffff7966e6a0 sp=0xffff7966e670 pc=0x45b90
runtime.newstack()
        /home/myitcv/gos/src/runtime/stack.go:1105 +0x460 fp=0xffff7966e850 sp=0xffff7966e6a0 pc=0x5f290
runtime.morestack()
        /home/myitcv/gos/src/runtime/asm_arm64.s:316 +0x70 fp=0xffff7966e850 sp=0xffff7966e850 pc=0x74530

goroutine 1 [running]:
cuelang.org/go/internal/core/adt.(*nodeContext).expandOne(0x4000473000, 0x2?)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/eval.go:2065 +0x160 fp=0x4020800340 sp=0x4020800340 pc=0x2a2bb0
cuelang.org/go/internal/core/adt.(*nodeContext).expandDisjuncts(0x4000473000, 0xb?, 0x4000473000, 0x0, 0x0, 0x1)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/disjunct.go:141 +0x98 fp=0x4020800ca0 sp=0x4020800340 pc=0x294b58
cuelang.org/go/internal/core/adt.(*OpContext).unify(0x40003e5200, 0x400047b440, 0x2)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/eval.go:292 +0x6d4 fp=0x4020800fb0 sp=0x4020800ca0 pc=0x299cc4
cuelang.org/go/internal/core/adt.(*OpContext).relNode(0x40003e5200, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/context.go:315 +0x44 fp=0x4020800fe0 sp=0x4020800fb0 pc=0x28c124
cuelang.org/go/internal/core/adt.(*FieldReference).resolve(0x4000596550, 0x400319cfa0?, 0xd8?)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/expr.go:699 +0x34 fp=0x4020801030 sp=0x4020800fe0 pc=0x2a7114
cuelang.org/go/internal/core/adt.(*OpContext).resolveState(0x40003e5200, {0x400319cfa0, {0x9feed8, 0x4000596550}, {0x0, 0x0, 0x0, {0x0, 0x0, 0x0}}}, ...)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/context.go:468 +0xd8 fp=0x4020801150 sp=0x4020801030 pc=0x28d008
cuelang.org/go/internal/core/adt.(*OpContext).Resolve(...)
        /home/myitcv/dev/cuelang/cue/internal/core/adt/context.go:462
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80?, 0xffff909e59d0?, {0xa01740?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:358 +0x108 fp=0x4020801240 sp=0x4020801150 pc=0x2c00b8
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cfa0, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020801310 sp=0x4020801240 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020801350 sp=0x4020801310 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020801420 sp=0x4020801350 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x40208014b0 sp=0x4020801420 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cf80?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020801570 sp=0x40208014b0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cf80?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020801690 sp=0x4020801570 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020801780 sp=0x4020801690 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cf80, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020801850 sp=0x4020801780 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020801890 sp=0x4020801850 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020801960 sp=0x4020801890 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x40208019f0 sp=0x4020801960 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cf60?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020801ab0 sp=0x40208019f0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cf60?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020801bd0 sp=0x4020801ab0 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020801cc0 sp=0x4020801bd0 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cf60, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020801d90 sp=0x4020801cc0 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020801dd0 sp=0x4020801d90 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020801ea0 sp=0x4020801dd0 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020801f30 sp=0x4020801ea0 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cf40?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020801ff0 sp=0x4020801f30 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cf40?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020802110 sp=0x4020801ff0 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020802200 sp=0x4020802110 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cf40, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x40208022d0 sp=0x4020802200 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020802310 sp=0x40208022d0 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x40208023e0 sp=0x4020802310 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020802470 sp=0x40208023e0 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cf20?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020802530 sp=0x4020802470 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cf20?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020802650 sp=0x4020802530 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020802740 sp=0x4020802650 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cf20, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020802810 sp=0x4020802740 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020802850 sp=0x4020802810 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020802920 sp=0x4020802850 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x40208029b0 sp=0x4020802920 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cf00?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020802a70 sp=0x40208029b0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cf00?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020802b90 sp=0x4020802a70 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020802c80 sp=0x4020802b90 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cf00, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020802d50 sp=0x4020802c80 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020802d90 sp=0x4020802d50 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020802e60 sp=0x4020802d90 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020802ef0 sp=0x4020802e60 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cee0?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020802fb0 sp=0x4020802ef0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cee0?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x40208030d0 sp=0x4020802fb0 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x40208031c0 sp=0x40208030d0 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cee0, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020803290 sp=0x40208031c0 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x40208032d0 sp=0x4020803290 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x40208033a0 sp=0x40208032d0 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020803430 sp=0x40208033a0 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cec0?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x40208034f0 sp=0x4020803430 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cec0?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020803610 sp=0x40208034f0 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020803700 sp=0x4020803610 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cec0, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x40208037d0 sp=0x4020803700 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020803810 sp=0x40208037d0 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x40208038e0 sp=0x4020803810 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020803970 sp=0x40208038e0 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319cea0?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020803a30 sp=0x4020803970 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319cea0?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020803b50 sp=0x4020803a30 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020803c40 sp=0x4020803b50 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319cea0, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020803d10 sp=0x4020803c40 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020803d50 sp=0x4020803d10 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020803e20 sp=0x4020803d50 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020803eb0 sp=0x4020803e20 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319ce80?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020803f70 sp=0x4020803eb0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319ce80?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020804090 sp=0x4020803f70 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020804180 sp=0x4020804090 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319ce80, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020804250 sp=0x4020804180 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020804290 sp=0x4020804250 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020804360 sp=0x4020804290 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x40208043f0 sp=0x4020804360 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319ce60?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x40208044b0 sp=0x40208043f0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319ce60?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x40208045d0 sp=0x40208044b0 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x40208046c0 sp=0x40208045d0 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319ce60, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020804790 sp=0x40208046c0 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x40208047d0 sp=0x4020804790 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x40208048a0 sp=0x40208047d0 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020804930 sp=0x40208048a0 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319ce40?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x40208049f0 sp=0x4020804930 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319ce40?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020804b10 sp=0x40208049f0 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020804c00 sp=0x4020804b10 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319ce40, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020804cd0 sp=0x4020804c00 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020804d10 sp=0x4020804cd0 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020804de0 sp=0x4020804d10 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x4020804e70 sp=0x4020804de0 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319ce20?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020804f30 sp=0x4020804e70 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319ce20?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020805050 sp=0x4020804f30 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020805140 sp=0x4020805050 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319ce20, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020805210 sp=0x4020805140 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020805250 sp=0x4020805210 pc=0x2c0e44
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400051f200, {0xa040c0?, 0x4000631710?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:337 +0x578 fp=0x4020805320 sp=0x4020805250 pc=0x2bfd78
cuelang.org/go/internal/core/dep.(*visitor).markConjuncts(0x0?, 0x28ca00?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:491 +0x7c fp=0x40208053b0 sp=0x4020805320 pc=0x2c088c
cuelang.org/go/internal/core/dep.(*visitor).markInternalResolvers(0x4000707a80, 0x400319ce00?, {0xa01740?, 0x4000596550?}, 0x0?)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:514 +0x78 fp=0x4020805470 sp=0x40208053b0 pc=0x2c0958
cuelang.org/go/internal/core/dep.(*visitor).reportDependency(0x4000707a80, 0x400319ce00?, {0xa01740?, 0x4000596550?}, 0x400047b560)
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:414 +0x178 fp=0x4020805590 sp=0x4020805470 pc=0x2c0378
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x4000707a80, 0xffff909e59d0?, {0xa01740?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:366 +0x210 fp=0x4020805680 sp=0x4020805590 pc=0x2c01c0
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x4000707a80, 0x400319ce00, {0xffff909e59d0?, 0x4000596550?})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:280 +0x470 fp=0x4020805750 sp=0x4020805680 pc=0x2bfc70
cuelang.org/go/internal/core/dep.(*visitor).markSubExpr(0x4000707a80, 0xa04018?, {0xa052c0?, 0x4000596550})
        /home/myitcv/dev/cuelang/cue/internal/core/dep/dep.go:566 +0x64 fp=0x4020805790 sp=0x4020805750 pc=0x2c0e44

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000062fa0 sp=0x4000062f80 pc=0x48600
runtime.goparkunlock(...)
        /home/myitcv/gos/src/runtime/proc.go:387
runtime.forcegchelper()
        /home/myitcv/gos/src/runtime/proc.go:305 +0xb0 fp=0x4000062fd0 sp=0x4000062fa0 pc=0x48450
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000062fd0 sp=0x4000062fd0 pc=0x769c4
created by runtime.init.6
        /home/myitcv/gos/src/runtime/proc.go:293 +0x24

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000063760 sp=0x4000063740 pc=0x48600
runtime.goparkunlock(...)
        /home/myitcv/gos/src/runtime/proc.go:387
runtime.bgsweep(0x0?)
        /home/myitcv/gos/src/runtime/mgcsweep.go:319 +0x100 fp=0x40000637b0 sp=0x4000063760 pc=0x34520
runtime.gcenable.func1()
        /home/myitcv/gos/src/runtime/mgc.go:178 +0x28 fp=0x40000637d0 sp=0x40000637b0 pc=0x29578
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000637d0 sp=0x40000637d0 pc=0x769c4
created by runtime.gcenable
        /home/myitcv/gos/src/runtime/mgc.go:178 +0x6c

goroutine 4 [sleep]:
runtime.gopark(0x4000040050?, 0x48740059fe3?, 0x0?, 0x0?, 0x921ea0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000063f10 sp=0x4000063ef0 pc=0x48600
runtime.goparkunlock(...)
        /home/myitcv/gos/src/runtime/proc.go:387
runtime.(*scavengerState).sleep(0xf25640, 0x41005e0000000000)
        /home/myitcv/gos/src/runtime/mgcscavenge.go:479 +0x118 fp=0x4000063f80 sp=0x4000063f10 pc=0x32638
runtime.bgscavenge(0x0?)
        /home/myitcv/gos/src/runtime/mgcscavenge.go:637 +0x98 fp=0x4000063fb0 sp=0x4000063f80 pc=0x329d8
runtime.gcenable.func2()
        /home/myitcv/gos/src/runtime/mgc.go:179 +0x28 fp=0x4000063fd0 sp=0x4000063fb0 pc=0x29518
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000063fd0 sp=0x4000063fd0 pc=0x769c4
created by runtime.gcenable
        /home/myitcv/gos/src/runtime/mgc.go:179 +0xac

goroutine 5 [finalizer wait]:
runtime.gopark(0x1a0?, 0xf26260?, 0xc0?, 0x36?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000062580 sp=0x4000062560 pc=0x48600
runtime.runfinq()
        /home/myitcv/gos/src/runtime/mfinal.go:193 +0x100 fp=0x40000627d0 sp=0x4000062580 pc=0x28640
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000627d0 sp=0x40000627d0 pc=0x769c4
created by runtime.createfing
        /home/myitcv/gos/src/runtime/mfinal.go:163 +0x80

goroutine 6 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000064740 sp=0x4000064720 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x40000647d0 sp=0x4000064740 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000647d0 sp=0x40000647d0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 18 [GC worker (idle)]:
runtime.gopark(0x48703be223a?, 0x1?, 0x79?, 0x3f?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x400005e740 sp=0x400005e720 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x400005e7d0 sp=0x400005e740 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400005e7d0 sp=0x400005e7d0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 7 [GC worker (idle)]:
runtime.gopark(0xf5e660?, 0x1?, 0x5e?, 0x1a?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000064f40 sp=0x4000064f20 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x4000064fd0 sp=0x4000064f40 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000064fd0 sp=0x4000064fd0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 8 [GC worker (idle)]:
runtime.gopark(0x48703be545b?, 0x1?, 0xfd?, 0xad?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000065740 sp=0x4000065720 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x40000657d0 sp=0x4000065740 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000657d0 sp=0x40000657d0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 34 [GC worker (idle)]:
runtime.gopark(0x48703be1bb7?, 0x3?, 0x5c?, 0x3d?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000114740 sp=0x4000114720 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x40001147d0 sp=0x4000114740 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40001147d0 sp=0x40001147d0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 19 [GC worker (idle)]:
runtime.gopark(0x48703bf6cf4?, 0x3?, 0x96?, 0xba?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x400005ef40 sp=0x400005ef20 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x400005efd0 sp=0x400005ef40 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400005efd0 sp=0x400005efd0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 20 [GC worker (idle)]:
runtime.gopark(0x48703bed22b?, 0x400003f1c0?, 0x1a?, 0x14?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x400005f740 sp=0x400005f720 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x400005f7d0 sp=0x400005f740 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400005f7d0 sp=0x400005f7d0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 35 [GC worker (idle)]:
runtime.gopark(0x48703be235d?, 0x1?, 0xd6?, 0xbc?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000114f40 sp=0x4000114f20 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x4000114fd0 sp=0x4000114f40 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000114fd0 sp=0x4000114fd0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 36 [GC worker (idle)]:
runtime.gopark(0xf5e660?, 0x1?, 0x17?, 0x36?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x4000115740 sp=0x4000115720 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x40001157d0 sp=0x4000115740 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40001157d0 sp=0x40001157d0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28

goroutine 21 [GC worker (idle)]:
runtime.gopark(0xf5e660?, 0x1?, 0xaf?, 0xc1?, 0x0?)
        /home/myitcv/gos/src/runtime/proc.go:381 +0xe0 fp=0x400005ff40 sp=0x400005ff20 pc=0x48600
runtime.gcBgMarkWorker()
        /home/myitcv/gos/src/runtime/mgc.go:1275 +0xe4 fp=0x400005ffd0 sp=0x400005ff40 pc=0x2b354
runtime.goexit()
        /home/myitcv/gos/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400005ffd0 sp=0x400005ffd0 pc=0x769c4
created by runtime.gcBgMarkStartWorkers
        /home/myitcv/gos/src/runtime/mgc.go:1199 +0x28
exit status 2

[exit status 1]
FAIL: /tmp/testscript3995157942/repro.txtar/script.txtar:2: unexpected go command failure

This is a regression compared to v0.5.0, and bisects to https://cuelang.org/cl/556948

cc @mvdan

mvdan commented 1 year ago

Minified repro, which I failed to minimize any further:

exec cue cmd print
cmp stdout stdout.golden

-- test_tool.cue --
package workflows

import (
    "tool/cli"
    "encoding/yaml"
)

command: print: cli.Print & { text: yaml.Marshal(workflow1) }

#Workflow: {
    jobs: [string]: #runJob | "never"

    #configuration: [...#configuration]

    #runJob: {
        step: run: string
        strategy?: #configuration
    }
}
#job:  ((#Workflow & _).jobs & {x:    _}).x
#step: (#job                 & {step: _}).step

workflow1: jobs: job1: step: #step & {run: "c"}
-- stdout.golden --
jobs:
  job1:
    step:
      run: c