cue icon indicating copy to clipboard operation
cue copied to clipboard

tools/flow: panic with comprehension clause

Open jlongtine opened this issue 2 years ago • 5 comments

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

Built from source@f207b0b

Does this issue reproduce with the latest release?

Yes, also happens with

$ cue version
cue version v0.4.3 darwin/arm64

What did you do?

exec cue cmd print

-- a.txt --
a is for apple
-- b.txt --
b is for banana
-- cue.mod/module.cue --
module: "longtine.io/cue/for-comp"
-- main_tool.cue --
package main

import (
	"tool/file"
	"tool/cli"
	"encoding/json"
)

command: {
	files: [fn=string]: string

	files_read: {
		for path, _ in files {
			"\(path)": file.Read & {
				filename: "\(path).txt"
				contents: string
			}
		}
	}

	files: {
		for path, output in files_read {
			"\(path)": output.contents
		}
	}

	files: {
		a: string
		b: string
	}

	print: cli.Print & {
		text: json.Marshal(files)
	}
}

What did you expect to see?

Something equivalent to this printed out:

{
  "a": "a is for apple",
  "b": "b is for banana"
}

What did you see instead?

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0x14020880380 stack=[0x14020880000, 0x14040880000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x10537dcf0?, 0x1059b1b00?})
	/opt/hostedtoolcache/go/1.18.1/x64/src/runtime/panic.go:992 +0x50
runtime.newstack()
	/opt/hostedtoolcache/go/1.18.1/x64/src/runtime/stack.go:1101 +0x46c
runtime.morestack()
	/opt/hostedtoolcache/go/1.18.1/x64/src/runtime/asm_arm64.s:310 +0x70

goroutine 1 [running]:
runtime.mapassign(0x10555e300?, 0x14020880950?, 0x14020880450?)
	/opt/hostedtoolcache/go/1.18.1/x64/src/runtime/map.go:578 +0x4a4 fp=0x14020880380 sp=0x14020880380 pc=0x104d69774
cuelang.org/go/internal/core/dep.marked.markExpr(0x10555e300?, {0x1055e39f8?, 0x140004b2820?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:59 +0x58 fp=0x14020880490 sp=0x14020880380 pc=0x1051f6988
cuelang.org/go/internal/core/dep.marked.markExpr(0x10555e300?, {0x1055e33f8?, 0x140004e3290?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:72 +0xf8 fp=0x140208805a0 sp=0x14020880490 pc=0x1051f6a28
cuelang.org/go/internal/core/dep.marked.markExpr(0x10554d1a0?, {0x1055e3ab8?, 0x140001483f0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:89 +0x4d0 fp=0x140208806b0 sp=0x140208805a0 pc=0x1051f6e00
cuelang.org/go/internal/core/dep.marked.markComprehension(0x10555e300?, 0x140004b28e0)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:131 +0x48 fp=0x140208806e0 sp=0x140208806b0 pc=0x1051f7018
cuelang.org/go/internal/core/dep.marked.markExpr(0x10555e300?, {0x1055e3ab8?, 0x14000148360?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:98 +0x5e4 fp=0x140208807f0 sp=0x140208806e0 pc=0x1051f6f14
cuelang.org/go/internal/core/dep.marked.markExpr(0x0?, {0x1055e3bf8?, 0x14000148990?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:67 +0x26c fp=0x14020880900 sp=0x140208807f0 pc=0x1051f6b9c
cuelang.org/go/internal/core/dep.VisitFields(0x14020880a48?, 0x105292b8c?, 0xa9fa69c01097050?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:89 +0x78 fp=0x14020880a20 sp=0x14020880900 pc=0x1051f5078
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148990?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020880a50 sp=0x14020880a20 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148990, {0x12cafc160, 0x1400010d120}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x14020880af0 sp=0x14020880a50 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020880ee0, 0x14005f95450, {0x12cafc160?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020880b60 sp=0x14020880af0 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020880ee0, 0x14005f95450, {0x1055e2640?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x14020880c20 sp=0x14020880b60 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x1?, 0x14005f95450, {0x1055e0608?, 0x140004e33e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020880c70 sp=0x14020880c20 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f95450?, 0x50?, 0x140004b2980)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020880cc0 sp=0x14020880c70 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x14020880ee0, 0x1055e2838?, {0x1055e0518?, 0x140004b2980?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020880d60 sp=0x14020880cc0 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020880ee0, 0x140003b0e10, {0x1055e2838?, 0x14000148510?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x14020880e20 sp=0x14020880d60 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x14020881040?, 0x140004b2800?, 0x3?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x14020880f20 sp=0x14020880e20 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x7600000000000000?, 0x14000148900, 0x14000148900?, 0x0?, 0x68?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x14020880ff0 sp=0x14020880f20 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x14020881138?, 0x105292b8c?, 0x5f3e890ae5f50db3?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x14020881110 sp=0x14020880ff0 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148900?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020881140 sp=0x14020881110 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148900, {0x12cafc160, 0x1400010d080}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x140208811e0 sp=0x14020881140 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x140208815d0, 0x14005f953b0, {0x12cafc160?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020881250 sp=0x140208811e0 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x140208815d0, 0x14005f953b0, {0x1055e2640?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x14020881310 sp=0x14020881250 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x12f079520?, 0x14005f953b0, {0x1055e0608?, 0x140004e31d0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020881360 sp=0x14020881310 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f953b0?, 0x50?, 0x140004b28e0)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x140208813b0 sp=0x14020881360 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x140208815d0, 0x1055e2838?, {0x1055e0518?, 0x140004b28e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020881450 sp=0x140208813b0 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x140208815d0, 0x140003b0e10, {0x1055e2838?, 0x14000148360?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x14020881510 sp=0x14020881450 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x14020881730?, 0x140004b2900?, 0x0?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x14020881610 sp=0x14020881510 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x7600000000000000?, 0x14000148990, 0x14000148990?, 0x0?, 0x58?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x140208816e0 sp=0x14020881610 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x14020881828?, 0x105292b8c?, 0xa9fa69c01097050?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x14020881800 sp=0x140208816e0 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148990?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020881830 sp=0x14020881800 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148990, {0x12cafc160, 0x1400010d120}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x140208818d0 sp=0x14020881830 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020881cc0, 0x14005f95360, {0x12cafc160?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020881940 sp=0x140208818d0 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020881cc0, 0x14005f95360, {0x1055e2640?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x14020881a00 sp=0x14020881940 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x1?, 0x14005f95360, {0x1055e0608?, 0x140004e33e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020881a50 sp=0x14020881a00 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f95360?, 0x50?, 0x140004b2980)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020881aa0 sp=0x14020881a50 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x14020881cc0, 0x1055e2838?, {0x1055e0518?, 0x140004b2980?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020881b40 sp=0x14020881aa0 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020881cc0, 0x140003b0e10, {0x1055e2838?, 0x14000148510?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x14020881c00 sp=0x14020881b40 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x14020881e20?, 0x140004b2800?, 0x3?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x14020881d00 sp=0x14020881c00 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x0?, 0x14000148900, 0x14000148900?, 0x0?, 0x48?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x14020881dd0 sp=0x14020881d00 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x14020881f18?, 0x105292b8c?, 0x5f3e890ae5f50db3?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x14020881ef0 sp=0x14020881dd0 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148900?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020881f20 sp=0x14020881ef0 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148900, {0x12cafc160, 0x1400010d080}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x14020881fc0 sp=0x14020881f20 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x140208823b0, 0x14005f952c0, {0x12cafc160?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020882030 sp=0x14020881fc0 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x140208823b0, 0x14005f952c0, {0x1055e2640?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x140208820f0 sp=0x14020882030 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x0?, 0x14005f952c0, {0x1055e0608?, 0x140004e31d0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020882140 sp=0x140208820f0 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f952c0?, 0x50?, 0x140004b28e0)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020882190 sp=0x14020882140 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x140208823b0, 0x1055e2838?, {0x1055e0518?, 0x140004b28e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020882230 sp=0x14020882190 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x140208823b0, 0x140003b0e10, {0x1055e2838?, 0x14000148360?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x140208822f0 sp=0x14020882230 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x14020882510?, 0x140004b2900?, 0x0?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x140208823f0 sp=0x140208822f0 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x0?, 0x14000148990, 0x14000148990?, 0x0?, 0x38?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x140208824c0 sp=0x140208823f0 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x14020882608?, 0x105292b8c?, 0xa9fa69c01097050?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x140208825e0 sp=0x140208824c0 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148990?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020882610 sp=0x140208825e0 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148990, {0x12cafc160, 0x1400010d120}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x140208826b0 sp=0x14020882610 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020882aa0, 0x14005f95270, {0x12cafc160?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020882720 sp=0x140208826b0 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020882aa0, 0x14005f95270, {0x1055e2640?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x140208827e0 sp=0x14020882720 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x1?, 0x14005f95270, {0x1055e0608?, 0x140004e33e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020882830 sp=0x140208827e0 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f95270?, 0x50?, 0x140004b2980)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020882880 sp=0x14020882830 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x14020882aa0, 0x1055e2838?, {0x1055e0518?, 0x140004b2980?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020882920 sp=0x14020882880 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020882aa0, 0x140003b0e10, {0x1055e2838?, 0x14000148510?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x140208829e0 sp=0x14020882920 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x14020882c00?, 0x140004b2800?, 0x3?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x14020882ae0 sp=0x140208829e0 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x7600000000000000?, 0x14000148900, 0x14000148900?, 0x0?, 0x28?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x14020882bb0 sp=0x14020882ae0 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x14020882cf8?, 0x105292b8c?, 0x5f3e890ae5f50db3?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x14020882cd0 sp=0x14020882bb0 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148900?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020882d00 sp=0x14020882cd0 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148900, {0x12cafc160, 0x1400010d080}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x14020882da0 sp=0x14020882d00 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020883190, 0x14005f951d0, {0x12cafc160?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020882e10 sp=0x14020882da0 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020883190, 0x14005f951d0, {0x1055e2640?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x14020882ed0 sp=0x14020882e10 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x0?, 0x14005f951d0, {0x1055e0608?, 0x140004e31d0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020882f20 sp=0x14020882ed0 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f951d0?, 0x50?, 0x140004b28e0)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020882f70 sp=0x14020882f20 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x14020883190, 0x1055e2838?, {0x1055e0518?, 0x140004b28e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020883010 sp=0x14020882f70 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020883190, 0x140003b0e10, {0x1055e2838?, 0x14000148360?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x140208830d0 sp=0x14020883010 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x140208832f0?, 0x140004b2900?, 0x0?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x140208831d0 sp=0x140208830d0 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x7600000000000000?, 0x14000148990, 0x14000148990?, 0x0?, 0x18?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x140208832a0 sp=0x140208831d0 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x140208833e8?, 0x105292b8c?, 0xa9fa69c01097050?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x140208833c0 sp=0x140208832a0 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148990?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x140208833f0 sp=0x140208833c0 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148990, {0x12cafc160, 0x1400010d120}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x14020883490 sp=0x140208833f0 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020883880, 0x14005f95180, {0x12cafc160?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020883500 sp=0x14020883490 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020883880, 0x14005f95180, {0x1055e2640?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x140208835c0 sp=0x14020883500 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x1?, 0x14005f95180, {0x1055e0608?, 0x140004e33e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020883610 sp=0x140208835c0 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f95180?, 0x50?, 0x140004b2980)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020883660 sp=0x14020883610 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x14020883880, 0x1055e2838?, {0x1055e0518?, 0x140004b2980?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020883700 sp=0x14020883660 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020883880, 0x140003b0e10, {0x1055e2838?, 0x14000148510?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x140208837c0 sp=0x14020883700 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x140208839e0?, 0x140004b2800?, 0x3?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x140208838c0 sp=0x140208837c0 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x0?, 0x14000148900, 0x14000148900?, 0x0?, 0x8?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x14020883990 sp=0x140208838c0 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x14020883ad8?, 0x105292b8c?, 0x5f3e890ae5f50db3?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x14020883ab0 sp=0x14020883990 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148900?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x14020883ae0 sp=0x14020883ab0 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148900, {0x12cafc160, 0x1400010d080}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x14020883b80 sp=0x14020883ae0 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020883f70, 0x14005f950e0, {0x12cafc160?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x14020883bf0 sp=0x14020883b80 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020883f70, 0x14005f950e0, {0x1055e2640?, 0x1400010d080?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x14020883cb0 sp=0x14020883bf0 pc=0x1051f592c
cuelang.org/go/internal/core/dep.(*visitor).markYielder(0x0?, 0x14005f950e0, {0x1055e0608?, 0x140004e31d0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:312 +0x84 fp=0x14020883d00 sp=0x14020883cb0 pc=0x1051f6524
cuelang.org/go/internal/core/dep.(*visitor).markComprehension(0x14005f950e0?, 0x50?, 0x140004b28e0)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:305 +0x34 fp=0x14020883d50 sp=0x14020883d00 pc=0x1051f6434
cuelang.org/go/internal/core/dep.(*visitor).markDecl(0x14020883f70, 0x1055e2838?, {0x1055e0518?, 0x140004b28e0?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:292 +0x2a4 fp=0x14020883df0 sp=0x14020883d50 pc=0x1051f62f4
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020883f70, 0x140003b0e10, {0x1055e2838?, 0x14000148360?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:208 +0x77c fp=0x14020883eb0 sp=0x14020883df0 pc=0x1051f5bbc
cuelang.org/go/internal/core/dep.visit(0x10555e300?, 0x140208840d0?, 0x140004b2900?, 0x0?, 0x0?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:126 +0x184 fp=0x14020883fb0 sp=0x14020883eb0 pc=0x1051f52d4
cuelang.org/go/internal/core/dep.dynamic(0x0?, 0x14000148990, 0x14000148990?, 0x0?, 0xf8?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/mixed.go:43 +0x14c fp=0x14020884080 sp=0x14020883fb0 pc=0x1051f686c
cuelang.org/go/internal/core/dep.VisitFields(0x140208841c8?, 0x105292b8c?, 0xa9fa69c01097050?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:91 +0x90 fp=0x140208841a0 sp=0x14020884080 pc=0x1051f5090
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies(0x14000152000, 0x140000ce7e0, 0x14000148990?)
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:230 +0x98 fp=0x140208841d0 sp=0x140208841a0 pc=0x105292998
cuelang.org/go/tools/flow.(*Controller).markTaskDependencies.func1({0x14000148990, {0x12cafc160, 0x1400010d120}, 0x1})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/tools/flow/tasks.go:246 +0x218 fp=0x14020884270 sp=0x140208841d0 pc=0x105292be8
cuelang.org/go/internal/core/dep.(*visitor).markResolver(0x14020884660, 0x14005f95090, {0x12cafc160?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:232 +0x108 fp=0x140208842e0 sp=0x14020884270 pc=0x1051f5d08
cuelang.org/go/internal/core/dep.(*visitor).markExpr(0x14020884660, 0x14005f95090, {0x1055e2640?, 0x1400010d120?})
	/home/runner/go/pkg/mod/cuelang.org/[email protected]/internal/core/dep/dep.go:151 +0x4ec fp=0x140208843a0 sp=0x140208842e0 pc=0x1051f592c
...additional frames elided...

goroutine 5 [chan receive]:
github.com/golang/glog.(*loggingT).flushDaemon(0x1400006479e?)
	/home/runner/go/pkg/mod/github.com/golang/[email protected]/glog.go:882 +0x60
created by github.com/golang/glog.init.0
	/home/runner/go/pkg/mod/github.com/golang/[email protected]/glog.go:410 +0x1f4

jlongtine avatar Apr 21 '22 22:04 jlongtine

I'm getting different, but still broken behavior in dagger when I do something similar. It's causing cycles.

jlongtine avatar Apr 21 '22 22:04 jlongtine

Looks like a bug (infinite recursion) in the flow package. For the time being, maybe you could just avoid the cycle by defining the file names in a separate place?

exec cue cmd print

-- a.txt --
a is for apple
-- b.txt --
b is for banana
-- cue.mod/module.cue --
module: "longtine.io/cue/for-comp"
-- main_tool.cue --
package main

import (
	"tool/file"
	"tool/cli"
	"encoding/json"
)

command: {
	file_names: {
		a: true
		b: true
	}

	files_read: {
		for path, _ in file_names {
			"\(path)": file.Read & {
				filename: "\(path).txt"
				contents: string
			}
		}
	}

	files: {
		for path, output in files_read {
			"\(path)": output.contents
		}
	}

	print: cli.Print & {
		text: json.Marshal(files)
	}
}

rogpeppe avatar Apr 25 '22 16:04 rogpeppe

Looks like a bug (infinite recursion) in the flow package. For the time being, maybe you could just avoid the cycle by defining the file names in a separate place?

That would probably be how we'd approach it, but we already have an existing API published that Dagger users are utilizing and relying on. This broke in a recent build of CUE. Definitely v0.4.3, and I believe v0.4.2, as well. It works in v0.4.1.

jlongtine avatar May 04 '22 20:05 jlongtine

@jlongtine

This broke in a recent build of CUE. Definitely v0.4.3, and I believe v0.4.2, as well. It works in v0.4.1.

Please can you bisect exactly where this broke?

That would probably be how we'd approach it, but we already have an existing API published that Dagger users are utilizing and relying on

Please can you provide a Dagger example showing the API that would be broken? That will help to understand the use case better (as opposed to a cue cmd repro) as it might help point to alternative solutions.

myitcv avatar May 15 '22 14:05 myitcv

@jlongtine

This broke in a recent build of CUE. Definitely v0.4.3, and I believe v0.4.2, as well. It works in v0.4.1.

Please can you bisect exactly where this broke?

Yeah, I'll work on that tomorrow!

That would probably be how we'd approach it, but we already have an existing API published that Dagger users are utilizing and relying on

Please can you provide a Dagger example showing the API that would be broken? That will help to understand the use case better (as opposed to a cue cmd repro) as it might help point to alternative solutions.

Yes, I'll work on getting you this, as well!

jlongtine avatar May 19 '22 21:05 jlongtine

The panic as been fixed. The code will not produce the expected result, though, as I don't think the dependencies are correct / supported. Did this ever work?

Here is a sample that does work on tip:

package main

import (
	"tool/file"
	"tool/cli"
	"encoding/json"
)

files_read: {
	for path, _ in files {
		"\(path)": file.Read & {
			filename: "\(path).txt"
			contents: string
		}
	}
}

files: {
	[fn=string]: files_read[fn].contents
	a: string
	b: string
}

command: {
	print: cli.Print & {
		text: json.Marshal(files)
	}
}

mpvl avatar Nov 10 '22 16:11 mpvl

Assuming I can consider this closed.

mpvl avatar Nov 14 '22 10:11 mpvl