traefik / yaegi

Yaegi is Another Elegant Go Interpreter

Home Page:https://pkg.go.dev/github.com/traefik/yaegi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Import the opentracing package in traefik plugins prompts a panic error

soooldier opened this issue · comments

The following program sample.go triggers an unexpected result

package main

import (
  "github.com/opentracing/opentracing-go"
)

func main() {
  // add a sample
}

Expected result

$ traefik --configFile=traefik.yml
// Can start traefik normally

Got

INFO[0000] Configuration loaded from file: /Users/xxx/WorkSpace/traefik.yml
2022/05/17 19:07:25 scope.go:220: nil type
panic: nil type

goroutine 1 [running]:
log.Panic({0xc000dcce10?, 0xc000dcce20?, 0x44d5af1?})
	log/log.go:385 +0x65
github.com/traefik/yaegi/interp.(*scope).add(0xc0010d7d40, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/scope.go:220 +0x5d
github.com/traefik/yaegi/interp.(*Interpreter).cfg.func1(0xc001059c20)
	github.com/traefik/yaegi@v0.11.3/interp/cfg.go:192 +0x3af2
github.com/traefik/yaegi/interp.(*node).Walk(0xc001059c20, 0xc000dcd3f0, 0xc000dcd3b8)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:285 +0x34
github.com/traefik/yaegi/interp.(*node).Walk(0xc0010597a0, 0xc000dcd3f0, 0xc000dcd3b8)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*node).Walk(0xc001059680, 0xc000dcd3f0, 0xc000dcd3b8)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*node).Walk(0xc001059560, 0xc000dcd3f0, 0xc000dcd3b8)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*node).Walk(0xc001057c20, 0xc000dcd3f0, 0xc000dcd3b8)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*node).Walk(0xc000fd5b00, 0xc000dcd3f0, 0xc000dcd3b8)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*Interpreter).cfg(0xc000df4000, 0xc000fd5b00, 0xc0010d7d40, {0xc0009771a1, 0x25}, {0xc000ee01a0, 0xb})
	github.com/traefik/yaegi@v0.11.3/interp/cfg.go:62 +0x285
github.com/traefik/yaegi/interp.(*Interpreter).importSrc(0xc000df4000, {0xc0001fdaa0, 0x1d}, {0xc0009771a1, 0x25}, 0x1)
	github.com/traefik/yaegi@v0.11.3/interp/src.go:125 +0x6d6
github.com/traefik/yaegi/interp.(*Interpreter).gta.func1(0xc000e0d8c0)
	github.com/traefik/yaegi@v0.11.3/interp/gta.go:237 +0x1daa
github.com/traefik/yaegi/interp.(*node).Walk(0xc000e0d8c0, 0xc000dce160, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:285 +0x34
github.com/traefik/yaegi/interp.(*node).Walk(0xc000e0cc60, 0xc000dce160, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*node).Walk(0xc000e0ca20, 0xc000dce160, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*Interpreter).gta(0xc000df4000, 0xc000e0ca20, {0xc0001fdaa0, 0x1d}, {0xc0001fd941, 0x1d}, {0xc000b77cd0, 0xa})
	github.com/traefik/yaegi@v0.11.3/interp/gta.go:20 +0x22b
github.com/traefik/yaegi/interp.(*Interpreter).importSrc(0xc000df4000, {0xc000b77bc8, 0x4}, {0xc0001fd941, 0x1d}, 0x1)
	github.com/traefik/yaegi@v0.11.3/interp/src.go:108 +0xf8a
github.com/traefik/yaegi/interp.(*Interpreter).gta.func1(0xc000e0c7e0)
	github.com/traefik/yaegi@v0.11.3/interp/gta.go:237 +0x1daa
github.com/traefik/yaegi/interp.(*node).Walk(0xc000e0c7e0, 0xc000dceef8, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:285 +0x34
github.com/traefik/yaegi/interp.(*node).Walk(0xc000e0c6c0, 0xc000dceef8, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*node).Walk(0xc000e0c480, 0xc000dceef8, 0x0)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:289 +0x75
github.com/traefik/yaegi/interp.(*Interpreter).gta(0xc000df4000, 0xc000e0c480, {0xc000b77bc8, 0x4}, {0xc000b77bc8, 0x4}, {0xc000b77bc8, 0x4})
	github.com/traefik/yaegi@v0.11.3/interp/gta.go:20 +0x22b
github.com/traefik/yaegi/interp.(*Interpreter).gtaRetry(0xc000df4000?, {0xc000dcf0d8?, 0xc0000b7680?, 0xc000dcf020?}, {0xc000b77bc8, 0x4}, {0xc000b77bc8, 0x4})
	github.com/traefik/yaegi@v0.11.3/interp/gta.go:346 +0x155
github.com/traefik/yaegi/interp.(*Interpreter).CompileAST(0xc000df4000, {0x7a5d0d0?, 0xc0000b7680?})
	github.com/traefik/yaegi@v0.11.3/interp/program.go:77 +0x17f
github.com/traefik/yaegi/interp.(*Interpreter).compileSrc(0xc000df4000, {0xc000976fc0?, 0x1?}, {0x0?, 0xc000976fc0?}, 0x80?)
	github.com/traefik/yaegi@v0.11.3/interp/program.go:52 +0xb8
github.com/traefik/yaegi/interp.(*Interpreter).eval(0xc000df4000, {0xc000976fc0?, 0xc000dcf348?}, {0x0?, 0x1?}, 0x0?)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:606 +0x28
github.com/traefik/yaegi/interp.(*Interpreter).Eval(...)
	github.com/traefik/yaegi@v0.11.3/interp/interp.go:492
github.com/traefik/traefik/v2/pkg/plugins.NewBuilder(0x0, 0x0?, 0xffffffffffffffff?)
	github.com/traefik/traefik/v2/pkg/plugins/builder.go:104 +0xdc6
main.createPluginBuilder(0xc000753700?)
	github.com/traefik/traefik/v2/cmd/traefik/plugins.go:18 +0x35
main.setupServer(0xc000753700)
	github.com/traefik/traefik/v2/cmd/traefik/traefik.go:224 +0x5cd
main.runCmd(0xc000753700)
	github.com/traefik/traefik/v2/cmd/traefik/traefik.go:116 +0x3df
main.main.func1({0xc0009dda20?, 0xc00013c010?, 0x8?})
	github.com/traefik/traefik/v2/cmd/traefik/traefik.go:61 +0x1f
github.com/traefik/paerser/cli.run(0xc000753780, {0xc00013c010?, 0x1?, 0x1?})
	github.com/traefik/paerser@v0.1.5/cli/commands.go:133 +0x193
github.com/traefik/paerser/cli.execute(0xc000753780, {0xc00013c000?, 0x2, 0x2}, 0xa0?)
	github.com/traefik/paerser@v0.1.5/cli/commands.go:67 +0x2cc
github.com/traefik/paerser/cli.Execute(...)
	github.com/traefik/paerser@v0.1.5/cli/commands.go:51
main.main()
	github.com/traefik/traefik/v2/cmd/traefik/traefik.go:77 +0x3fc

Yaegi Version

0.11.3

Additional Notes

vim plugins-local/src/infra/traefik-plugins/test.go
import "github.com/opentracing/opentracing-go"