traefik / yaegi

Yaegi is Another Elegant Go Interpreter
https://pkg.go.dev/github.com/traefik/yaegi
Apache License 2.0
7.1k stars 351 forks source link

goroutine stack exceeds 1000000000-byte limit #1442

Closed Ovi3 closed 2 years ago

Ovi3 commented 2 years ago

The following program sample.go triggers an unexpected result

package main

import (
        "github.com/traefik/yaegi/interp"
        "github.com/traefik/yaegi/stdlib"
)

func main() {
        i := interp.New(interp.Options{})

        i.Use(stdlib.Symbols)

        _, err := i.Eval(`
import (
        "context"
        "fmt"
)

func quickPrint() {
        ctx, _ := context.WithCancel(context.Background())
        ch := make(chan string, 20)
        defer close(ch)

        for i := 0; i < 10; i++ {
                fmt.Println(i)
                go func(ctx context.Context, ch <-chan string) {
                        for {
                                select {
                                case <-ctx.Done():
                                        return
                                case tmp := <-ch:
                                        fmt.Println(tmp)
                                }
                        }
                }(ctx, ch)
        }
        for _, i := range "abcdef" {
                for _, j := range "0123456789" {
                        for _, k := range "ABCDEF" {
                                select {
                                case <-ctx.Done():
                                        return
                                default:
                                        tmp := string(i) + string(j) + string(k)
                                        ch <- tmp
                                }

                        }
                }
        }
        return
}

`)
        if err != nil {
                panic(err)
        }

}

Expected result

// no panic

Got

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc020400390 stack=[0xc020400000, 0xc040400000]
fatal error: stack overflow

runtime stack:
runtime.throw({0xe07e96?, 0x1441820?})
        runtime/panic.go:992 +0x71
runtime.newstack()
        runtime/stack.go:1101 +0x5cc
runtime.morestack()
        runtime/asm_amd64.s:547 +0x8b

goroutine 1 [running]:
runtime.mallocgc(0x10?, 0xdca2a0?, 0x1?)
        runtime/malloc.go:909 +0x91d fp=0xc0204003a0 sp=0xc020400398 pc=0x41227d
runtime.makeslice(0x0?, 0x0?, 0x0?)
        runtime/slice.go:103 +0x52 fp=0xc0204003c8 sp=0xc0204003a0 pc=0x454ff2
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3672 +0x46 fp=0xc020400490 sp=0xc0204003c8 pc=0x6be4e6
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc0204004d8 sp=0xc020400490 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400520 sp=0xc0204004d8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400568 sp=0xc020400520 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204005b0 sp=0xc020400568 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020400670 sp=0xc0204005b0 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020400738 sp=0xc020400670 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020400780 sp=0xc020400738 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204007c8 sp=0xc020400780 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400810 sp=0xc0204007c8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400858 sp=0xc020400810 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020400918 sp=0xc020400858 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc0204009e0 sp=0xc020400918 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020400a28 sp=0xc0204009e0 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400a70 sp=0xc020400a28 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400ab8 sp=0xc020400a70 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400b00 sp=0xc020400ab8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020400bc0 sp=0xc020400b00 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020400c88 sp=0xc020400bc0 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020400cd0 sp=0xc020400c88 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400d18 sp=0xc020400cd0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400d60 sp=0xc020400d18 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400da8 sp=0xc020400d60 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020400e68 sp=0xc020400da8 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020400f30 sp=0xc020400e68 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020400f78 sp=0xc020400f30 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020400fc0 sp=0xc020400f78 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401008 sp=0xc020400fc0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401050 sp=0xc020401008 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020401110 sp=0xc020401050 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc0204011d8 sp=0xc020401110 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020401220 sp=0xc0204011d8 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401268 sp=0xc020401220 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204012b0 sp=0xc020401268 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204012f8 sp=0xc0204012b0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc0204013b8 sp=0xc0204012f8 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020401480 sp=0xc0204013b8 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc0204014c8 sp=0xc020401480 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401510 sp=0xc0204014c8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401558 sp=0xc020401510 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204015a0 sp=0xc020401558 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020401660 sp=0xc0204015a0 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020401728 sp=0xc020401660 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020401770 sp=0xc020401728 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204017b8 sp=0xc020401770 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401800 sp=0xc0204017b8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401848 sp=0xc020401800 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020401908 sp=0xc020401848 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc0204019d0 sp=0xc020401908 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020401a18 sp=0xc0204019d0 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401a60 sp=0xc020401a18 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401aa8 sp=0xc020401a60 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401af0 sp=0xc020401aa8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020401bb0 sp=0xc020401af0 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020401c78 sp=0xc020401bb0 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020401cc0 sp=0xc020401c78 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401d08 sp=0xc020401cc0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401d50 sp=0xc020401d08 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401d98 sp=0xc020401d50 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020401e58 sp=0xc020401d98 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020401f20 sp=0xc020401e58 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020401f68 sp=0xc020401f20 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401fb0 sp=0xc020401f68 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020401ff8 sp=0xc020401fb0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402040 sp=0xc020401ff8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020402100 sp=0xc020402040 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc0204021c8 sp=0xc020402100 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020402210 sp=0xc0204021c8 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402258 sp=0xc020402210 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204022a0 sp=0xc020402258 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204022e8 sp=0xc0204022a0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc0204023a8 sp=0xc0204022e8 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020402470 sp=0xc0204023a8 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc0204024b8 sp=0xc020402470 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402500 sp=0xc0204024b8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402548 sp=0xc020402500 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402590 sp=0xc020402548 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020402650 sp=0xc020402590 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020402718 sp=0xc020402650 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020402760 sp=0xc020402718 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204027a8 sp=0xc020402760 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc0204027f0 sp=0xc0204027a8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402838 sp=0xc0204027f0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc0204028f8 sp=0xc020402838 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc0204029c0 sp=0xc0204028f8 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020402a08 sp=0xc0204029c0 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402a50 sp=0xc020402a08 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402a98 sp=0xc020402a50 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402ae0 sp=0xc020402a98 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020402ba0 sp=0xc020402ae0 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020402c68 sp=0xc020402ba0 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020402cb0 sp=0xc020402c68 pc=0x63d376
github.com/traefik/yaegi/interp.setExec.func1(0xc0003dad80)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402cf8 sp=0xc020402cb0 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003db200)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402d40 sp=0xc020402cf8 pc=0x63d298
github.com/traefik/yaegi/interp.setExec.func1(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2818 +0x118 fp=0xc020402d88 sp=0xc020402d40 pc=0x63d298
github.com/traefik/yaegi/interp.setExec(0xc0003daea0)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2832 +0xe4 fp=0xc020402e48 sp=0xc020402d88 pc=0x63d144
github.com/traefik/yaegi/interp.getExec(...)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2794
github.com/traefik/yaegi/interp._select(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/run.go:3689 +0x215 fp=0xc020402f10 sp=0xc020402e48 pc=0x6be6b5
github.com/traefik/yaegi/interp.setExec.func1(0xc0003d9e60)
        github.com/traefik/yaegi@v0.14.1/interp/cfg.go:2829 +0x1f6 fp=0xc020402f58 sp=0xc020402f10 pc=0x63d376
exit status 2

Yaegi Version

v0.14.1

Additional Notes

$ go version go version go1.18.3 linux/amd64

Seem like when using channel variable, and it will panic goroutine stack exceeds 1000000000-byte limit