alibaba / higress

Cloud Native API Gateway | 云原生API网关
https://higress.io
Apache License 2.0
2.63k stars 434 forks source link

Failed to compile wasm plugin by tinygo in Actions #737

Closed WeixinX closed 5 months ago

WeixinX commented 7 months ago

Ⅰ. Issue Description

Actions 中 tinygo 编译 wasm 插件失败,导致需要 re-run job

Ⅱ. Describe what happened

If there is an exception, please attach the exception trace:

#10 [builder 6/6] RUN tinygo build -o /main.wasm -scheduler=none -gc=custom -tags='custommalloc nottinygc_finalizer' -target=wasi ./
#10 8.787 SIGSEGV: segmentation violation
#10 8.787 PC=0x512465e m=4 sigcode=18446744073709551610
#10 8.787 signal arrived during cgo execution
#10 8.787 
#10 8.787 goroutine 243 [syscall]:
#10 8.787 runtime.cgocall(0x852450, 0xc01d9557f8)
#10 8.787   /usr/local/go/src/runtime/cgocall.go:157 +0x5c fp=0xc01d9557d0 sp=0xc01d955798 pc=0x4c36bc
#10 8.787 tinygo.org/x/go-llvm._Cfunc_LLVMDeleteFunction(0x7fd9ba3c9018)
#10 8.787   _cgo_gotypes.go:4704 +0x45 fp=0xc01d9557f8 sp=0xc01d9557d0 pc=0x6f3a25
#10 8.787 tinygo.org/x/go-llvm.Value.EraseFromParentAsFunction.func1({0xc00fcb63c0?})
#10 8.787   /go/pkg/mod/tinygo.org/x/go-llvm@v0.0.0-20221028[1830](https://github.com/alibaba/higress/actions/runs/7333588924/job/19976760836?pr=689#step:7:1831)34-8341240c0b32/ir.go:1129 +0x3f fp=0xc01d955830 sp=0xc01d9557f8 pc=0x70abdf
#10 8.787 tinygo.org/x/go-llvm.Value.EraseFromParentAsFunction({0xc01d955b50?})
#10 8.787   /go/pkg/mod/tinygo.org/x/go-llvm@v0.0.0-20221028183034-8341240c0b32/ir.go:1129 +0x19 fp=0xc01d955848 sp=0xc01d955830 pc=0x70ab79
#10 8.787 github.com/tinygo-org/tinygo/interp.RunFunc({0xc0003742d0?}, 0xc00422ad80?, 0x20?)
#10 8.787   /__w/tinygo/tinygo/interp/interp.go:281 +0xba8 fp=0xc01d955bd0 sp=0xc01d955848 pc=0x7c2b08
#10 8.787 github.com/tinygo-org/tinygo/builder.Build.func3(0xc007887e00)
#10 8.787   /__w/tinygo/tinygo/builder/build.go:437 +0xcd9 fp=0xc01d955f78 sp=0xc01d955bd0 pc=0x800ef9
#10 8.787 github.com/tinygo-org/tinygo/builder.runJob(0xc007887e00, 0x0?)
#10 8.787   /__w/tinygo/tinygo/builder/jobs.go:222 +0x4f fp=0xc01d955fc0 sp=0xc01d955f78 pc=0x80c84f
#10 8.787 github.com/tinygo-org/tinygo/builder.runJobs.func2()
#10 8.787   /__w/tinygo/tinygo/builder/jobs.go:123 +0x2a fp=0xc01d955fe0 sp=0xc01d955fc0 pc=0x80c18a
#10 8.787 runtime.goexit()
#10 8.787   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc01d955fe8 sp=0xc01d955fe0 pc=0x5266c1
#10 8.787 created by github.com/tinygo-org/tinygo/builder.runJobs
#10 8.787   /__w/tinygo/tinygo/builder/jobs.go:123 +0x5be
#10 8.787 
#10 8.787 goroutine 1 [chan receive]:
#10 8.787 runtime.gopark(0xc00788fa40?, 0x2?, 0x0?, 0x0?, 0xc008146630?)
#10 8.787   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc0081465b0 sp=0xc008146590 pc=0x4f6c76
#10 8.787 runtime.chanrecv(0xc004558900, 0xc008146768, 0x1)
#10 8.787   /usr/local/go/src/runtime/chan.go:583 +0x49d fp=0xc008146640 sp=0xc0081465b0 pc=0x4c647d
#10 8.787 runtime.chanrecv1(0x54f3e80?, 0xc003f23c50?)
#10 8.787   /usr/local/go/src/runtime/chan.go:442 +0x18 fp=0xc008146668 sp=0xc008146640 pc=0x4c5f78
#10 8.787 github.com/tinygo-org/tinygo/builder.runJobs(0xc00788cc80?, 0xc007890198?)
#10 8.787   /__w/tinygo/tinygo/builder/jobs.go:132 +0x5e7 fp=0xc008146a60 sp=0xc008146668 pc=0x80bde7
#10 8.787 github.com/tinygo-org/tinygo/builder.Build({0x7ffc55b51eea, 0x2}, {0x7ffc55b51e90, 0xa}, {0xc00012e660, 0x15}, 0xc000024480)
#10 8.787   /__w/tinygo/tinygo/builder/build.go:877 +0x369a fp=0xc008147568 sp=0xc008146a60 pc=0x7fc13a
#10 8.787 main.Build({0x7ffc55b51eea, 0x2}, {0x7ffc55b51e90, 0xa}, 0xc00012c1e0)
#10 8.787   /__w/tinygo/tinygo/main.go:168 +0x26f fp=0xc0081477d0 sp=0xc008147568 pc=0x8240af
#10 8.787 main.main()
#10 8.787   /__w/tinygo/tinygo/main.go:1573 +0x3588 fp=0xc008147f80 sp=0xc0081477d0 pc=0x831da8
#10 8.787 runtime.main()
#10 8.787   /usr/local/go/src/runtime/proc.go:250 +0x207 fp=0xc008147fe0 sp=0xc008147f80 pc=0x4f6847
#10 8.787 runtime.goexit()
#10 8.787   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc008147fe8 sp=0xc008147fe0 pc=0x5266c1
#10 8.787 
#10 8.787 goroutine 2 [force gc (idle)]:
#10 8.787 runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
#10 8.787   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000044fb0 sp=0xc000044f90 pc=0x4f6c76
#10 8.787 runtime.goparkunlock(...)
#10 8.787   /usr/local/go/src/runtime/proc.go:387
#10 8.787 runtime.forcegchelper()
#10 8.787   /usr/local/go/src/runtime/proc.go:305 +0xb0 fp=0xc000044fe0 sp=0xc000044fb0 pc=0x4f6ab0
#10 8.787 runtime.goexit()
#10 8.787   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000044fe8 sp=0xc000044fe0 pc=0x5266c1
#10 8.787 created by runtime.init.6
#10 8.787   /usr/local/go/src/runtime/proc.go:293 +0x25
#10 8.787 
#10 8.787 goroutine 3 [GC sweep wait]:
#10 8.787 runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
#10 8.787   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000045780 sp=0xc000045760 pc=0x4f6c76
#10 8.787 runtime.goparkunlock(...)
#10 8.787   /usr/local/go/src/runtime/proc.go:387
#10 8.787 runtime.bgsweep(0x0?)
#10 8.787   /usr/local/go/src/runtime/mgcsweep.go:319 +0xde fp=0xc0000457c8 sp=0xc000045780 pc=0x4e341e
#10 8.787 runtime.gcenable.func1()
#10 8.787   /usr/local/go/src/runtime/mgc.go:178 +0x26 fp=0xc0000457e0 sp=0xc0000457c8 pc=0x4d8886
#10 8.787 runtime.goexit()
#10 8.787   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc0000457e8 sp=0xc0000457e0 pc=0x5266c1
#10 8.787 created by runtime.gcenable
#10 8.787   /usr/local/go/src/runtime/mgc.go:178 +0x6b
#10 8.787 
#10 8.787 goroutine 4 [GC scavenge wait]:
#10 8.787 runtime.gopark(0xd355e34729?, 0x3023b9?, 0x0?, 0x0?, 0x0?)
#10 8.787   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000045f70 sp=0xc000045f50 pc=0x4f6c76
#10 8.787 runtime.goparkunlock(...)
#10 8.787   /usr/local/go/src/runtime/proc.go:387
#10 8.787 runtime.(*scavengerState).park(0x76c2780)
#10 8.787   /usr/local/go/src/runtime/mgcscavenge.go:400 +0x53 fp=0xc000045fa0 sp=0xc000045f70 pc=0x4e12f3
#10 8.787 runtime.bgscavenge(0x0?)
#10 8.787   /usr/local/go/src/runtime/mgcscavenge.go:633 +0x65 fp=0xc000045fc8 sp=0xc000045fa0 pc=0x4e18e5
#10 8.787 runtime.gcenable.func2()
#10 8.787   /usr/local/go/src/runtime/mgc.go:179 +0x26 fp=0xc000045fe0 sp=0xc000045fc8 pc=0x4d8826
#10 8.787 runtime.goexit()
#10 8.787   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000045fe8 sp=0xc000045fe0 pc=0x5266c1
#10 8.787 created by runtime.gcenable
#10 8.787   /usr/local/go/src/runtime/mgc.go:179 +0xaa
#10 8.787 
#10 8.787 goroutine 5 [finalizer wait]:
#10 8.787 runtime.gopark(0x0?, 0x5578578?, 0xc0?, 0xa1?, 0x2000000020?)
#10 8.787   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000044628 sp=0xc000044608 pc=0x4f6c76
#10 8.788 runtime.runfinq()
#10 8.788   /usr/local/go/src/runtime/mfinal.go:193 +0x107 fp=0xc0000447e0 sp=0xc000044628 pc=0x4d78c7
#10 8.788 runtime.goexit()
#10 8.788   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc0000447e8 sp=0xc0000447e0 pc=0x5266c1
#10 8.788 created by runtime.createfing
#10 8.788   /usr/local/go/src/runtime/mfinal.go:163 +0x45
#10 8.788 
#10 8.788 goroutine 7 [GC worker (idle)]:
#10 8.788 runtime.gopark(0xd3545710eb?, 0x3?, 0x3b?, 0xbd?, 0x0?)
#10 8.788   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000046f50 sp=0xc000046f30 pc=0x4f6c76
#10 8.788 runtime.gcBgMarkWorker()
#10 8.788   /usr/local/go/src/runtime/mgc.go:1275 +0xf1 fp=0xc000046fe0 sp=0xc000046f50 pc=0x4da3f1
#10 8.788 runtime.goexit()
#10 8.788   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000046fe8 sp=0xc000046fe0 pc=0x5266c1
#10 8.788 created by runtime.gcBgMarkStartWorkers
#10 8.788   /usr/local/go/src/runtime/mgc.go:1199 +0x25
#10 8.788 
#10 8.788 goroutine 18 [GC worker (idle)]:
#10 8.788 runtime.gopark(0xd268ef8270?, 0x1?, 0x57?, 0x33?, 0x0?)
#10 8.788   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000040750 sp=0xc000040730 pc=0x4f6c76
#10 8.788 runtime.gcBgMarkWorker()
#10 8.788   /usr/local/go/src/runtime/mgc.go:1275 +0xf1 fp=0xc0000407e0 sp=0xc000040750 pc=0x4da3f1
#10 8.788 runtime.goexit()
#10 8.788   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc0000407e8 sp=0xc0000407e0 pc=0x5266c1
#10 8.788 created by runtime.gcBgMarkStartWorkers
#10 8.788   /usr/local/go/src/runtime/mgc.go:1199 +0x25
#10 8.788 
#10 8.788 goroutine 8 [GC worker (idle)]:
#10 8.788 runtime.gopark(0xd354659f68?, 0x1?, 0x58?, 0xbb?, 0x0?)
#10 8.788   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000047750 sp=0xc000047730 pc=0x4f6c76
#10 8.788 runtime.gcBgMarkWorker()
#10 8.788   /usr/local/go/src/runtime/mgc.go:1275 +0xf1 fp=0xc0000477e0 sp=0xc000047750 pc=0x4da3f1
#10 8.788 runtime.goexit()
#10 8.788   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc0000477e8 sp=0xc0000477e0 pc=0x5266c1
#10 8.788 created by runtime.gcBgMarkStartWorkers
#10 8.788   /usr/local/go/src/runtime/mgc.go:1199 +0x25
#10 8.788 
#10 8.788 goroutine 19 [GC worker (idle)]:
#10 8.788 runtime.gopark(0xd354659c91?, 0x3?, 0x5f?, 0x68?, 0x0?)
#10 8.788   /usr/local/go/src/runtime/proc.go:381 +0xd6 fp=0xc000040f50 sp=0xc000040f30 pc=0x4f6c76
#10 8.788 runtime.gcBgMarkWorker()
#10 8.788   /usr/local/go/src/runtime/mgc.go:1275 +0xf1 fp=0xc000040fe0 sp=0xc000040f50 pc=0x4da3f1
#10 8.788 runtime.goexit()
#10 8.788   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000040fe8 sp=0xc000040fe0 pc=0x5266c1
#10 8.788 created by runtime.gcBgMarkStartWorkers
#10 8.788   /usr/local/go/src/runtime/mgc.go:1199 +0x25
#10 8.788 
#10 8.788 goroutine 250 [syscall]:
#10 8.788 runtime.cgocall(0x84ecb0, 0xc008143b70)
#10 8.788   /usr/local/go/src/runtime/cgocall.go:157 +0x5c fp=0xc008143b48 sp=0xc008143b10 pc=0x4c36bc
#10 8.788 tinygo.org/x/go-llvm._Cfunc_LLVMWriteBitcodeToFD(0x7fd9ba72a590, 0x3, 0x0, 0x0)
#10 8.788   _cgo_gotypes.go:9383 +0x4c fp=0xc008143b70 sp=0xc008143b48 pc=0x6fb8cc
#10 8.788 tinygo.org/x/go-llvm.WriteBitcodeToFile.func1({0xc018a27980?}, 0x0?)
#10 8.788   /go/pkg/mod/tinygo.org/x/go-llvm@v0.0.0-20221028183034-8341240c0b32/bitwriter.go:27 +0x92 fp=0xc008143bb0 sp=0xc008143b70 pc=0x6fc592
#10 8.788 tinygo.org/x/go-llvm.WriteBitcodeToFile({0xc018a27980?}, 0xc007079ce0?)
#10 8.788   /go/pkg/mod/tinygo.org/x/go-llvm@v0.0.0-20221028183034-8341240c0b32/bitwriter.go:27 +0x19 fp=0xc008143bd0 sp=0xc008143bb0 pc=0x6fc4b9
#10 8.788 github.com/tinygo-org/tinygo/builder.Build.func3(0xc00788e7e0)
#10 8.788   /__w/tinygo/tinygo/builder/build.go:466 +0xe46 fp=0xc008143f78 sp=0xc008143bd0 pc=0x801066
#10 8.788 github.com/tinygo-org/tinygo/builder.runJob(0xc00788e7e0, 0x0?)
#10 8.788   /__w/tinygo/tinygo/builder/jobs.go:222 +0x4f fp=0xc008143fc0 sp=0xc008143f78 pc=0x80c84f
#10 8.788 github.com/tinygo-org/tinygo/builder.runJobs.func2()
#10 8.788   /__w/tinygo/tinygo/builder/jobs.go:123 +0x2a fp=0xc008143fe0 sp=0xc008143fc0 pc=0x80c18a
#10 8.788 runtime.goexit()
#10 8.788   /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc008143fe8 sp=0xc008143fe0 pc=0x5266c1
#10 8.788 created by github.com/tinygo-org/tinygo/builder.runJobs
#10 8.788   /__w/tinygo/tinygo/builder/jobs.go:123 +0x5be
#10 8.788 
#10 8.788 rax    0x7fd9b9cd2d30
#10 8.788 rbx    0x7fd9bb4b52a8
#10 8.788 rcx    0x42
#10 8.788 rdx    0x7fd9bc9fa900
#10 8.788 rdi    0x7fd9bb4b52b8
#10 8.788 rsi    0x7fd9b9dd2810
#10 8.788 rbp    0x7fd9ba3c9018
#10 8.788 rsp    0x7fd9bd47c908
#10 8.788 r8     0x7fd9b9dd2828
#10 8.788 r9     0x1
#10 8.788 r10    0x2008
#10 8.788 r11    0x0
#10 8.788 r12    0x7fd9ba3c9060
#10 8.788 r13    0x7fd9ba3c9018
#10 8.788 r14    0xc000f456c0
#10 8.788 r15    0xc000048c00
#10 8.788 rip    0x512465e
#10 8.788 rflags 0x10202
#10 8.788 cs     0x33
#10 8.788 fs     0x0
#10 8.788 gs     0x0
#10 ERROR: process "/bin/sh -c tinygo build -o /main.wasm -scheduler=none -gc=custom -tags='custommalloc nottinygc_finalizer' -target=wasi ./" did not complete successfully: exit code: 2
------
 > [builder 6/6] RUN tinygo build -o /main.wasm -scheduler=none -gc=custom -tags='custommalloc nottinygc_finalizer' -target=wasi ./:
8.788 r11    0x0
8.788 r12    0x7fd9ba3c9060
8.788 r13    0x7fd9ba3c9018
8.788 r14    0xc000f456c0
8.788 r15    0xc000048c00
8.788 rip    0x512465e
8.788 rflags 0x10202
8.788 cs     0x33
8.788 fs     0x0
8.788 gs     0x0
------
Dockerfile:17
--------------------
  15 |     
  16 |     RUN go mod tidy
  17 | >>> RUN tinygo build -o /main.wasm -scheduler=none -gc=custom -tags='custommalloc nottinygc_finalizer' -target=wasi ./
  18 |     
  19 |     FROM scratch as output
--------------------
ERROR: failed to solve: process "/bin/sh -c tinygo build -o /main.wasm -scheduler=none -gc=custom -tags='custommalloc nottinygc_finalizer' -target=wasi ./" did not complete successfully: exit code: 2
make[1]: *** [Makefile:18: build] Error 1
make[1]: Leaving directory '/home/runner/work/higress/higress/plugins/wasm-go'
make: *** [Makefile.core.mk:166: build-wasmplugins] Error 2
Error: Process completed with exit code 2.
baerwang commented 5 months ago

We don't change the existing ci. How about adding retry?

johnlanni commented 5 months ago

@baerwang It can be used as a temporary solution. Are you interested in trying it?