Description of problem:
The runc crashes and causes init container to fail with go statements in logs
Version-Release number of selected component (if applicable):
OCP 4.12
How reproducible:
- Customer's environment
Steps to Reproduce:
1. 2. 3.
Actual results:
runtime: epollwait on fd 7 failed with 1 fatal error: runtime: netpoll failed runtime stack: runtime.throw({0x55c305839652?, 0x7ffc67fb4a20?}) /usr/lib/golang/src/runtime/panic.go:1047 +0x5f fp=0x7ffc67fb49d0 sp=0x7ffc67fb49a0 pc=0x55c3054516ff runtime.netpoll(0xc0000071e0?) /usr/lib/golang/src/runtime/netpoll_epoll.go:130 +0x34e fp=0x7ffc67fb5030 sp=0x7ffc67fb49d0 pc=0x55c30544d9ce runtime.startTheWorldWithSema(0x0) /usr/lib/golang/src/runtime/proc.go:1264 +0x45 fp=0x7ffc67fb5090 sp=0x7ffc67fb5030 pc=0x55c305456925 runtime.gcStart.func2() /usr/lib/golang/src/runtime/mgc.go:730 +0x2d fp=0x7ffc67fb50b8 sp=0x7ffc67fb5090 pc=0x55c305435f4d runtime.systemstack() /usr/lib/golang/src/runtime/asm_amd64.s:492 +0x46 fp=0x7ffc67fb50c0 sp=0x7ffc67fb50b8 pc=0x55c3054809c6 goroutine 1 [running, locked to thread]: runtime.systemstack_switch() /usr/lib/golang/src/runtime/asm_amd64.s:459 fp=0xc000241618 sp=0xc000241610 pc=0x55c305480960 runtime.gcStart({0x7f6b05c36108?, 0xb68a?, 0x1f01?}) /usr/lib/golang/src/runtime/mgc.go:729 +0x425 fp=0xc0002416a0 sp=0xc000241618 pc=0x55c305435dc5 runtime.mallocgc(0xb68a, 0x55c305b30160, 0x1) /usr/lib/golang/src/runtime/malloc.go:1148 +0x817 fp=0xc000241718 sp=0xc0002416a0 pc=0x55c3054291f7 runtime.makeslice(0xc000419c00?, 0x6?, 0x55c305429100?) /usr/lib/golang/src/runtime/slice.go:103 +0x52 fp=0xc000241740 sp=0xc000241718 pc=0x55c305468d72 syscall.SlicePtrFromStrings({0xc000438000, 0x3ed, 0xc0002417e8?}) /usr/lib/golang/src/syscall/exec_unix.go:94 +0xf2 fp=0xc0002417c0 sp=0xc000241740 pc=0x55c3054c73d2 syscall.Exec({0xc000419c58?, 0x3ed?}, {0xc00016c4c0, 0x3, 0x4}, {0xc000438000, 0x3ed, 0x3ed}) /usr/lib/golang/src/syscall/exec_unix.go:279 +0xdb fp=0xc000241858 sp=0xc0002417c0 pc=0x55c3054c7d7b github.com/opencontainers/runc/vendor/golang.org/x/sys/unix.Exec(...) /builddir/build/BUILD/runc-1.1.6/GOPATH/src/github.com/opencontainers/runc/GOPATH/src/github.com/opencontainers/runc/vendor/golang.org/x/sys/unix/syscall_unix.go:559 github.com/opencontainers/runc/libcontainer/system.Exec({0xc000419c58, 0x7}, {0xc00016c4c0, 0x3, 0x4}, {0xc000438000, 0x3ed, 0x3ed}) /builddir/build/BUILD/runc-1.1.6/GOPATH/src/github.com/opencontainers/runc/GOPATH/src/github.com/opencontainers/runc/libcontainer/system/linux.go:45 +0x88 fp=0xc0002418b8 sp=0xc000241858 pc=0x55c3056cdba8 github.com/opencontainers/runc/libcontainer.(*linuxStandardInit).Init(0xc000178370) /builddir/build/BUILD/runc-1.1.6/GOPATH/src/github.com/opencontainers/runc/GOPATH/src/github.com/opencontainers/runc/libcontainer/standard_init_linux.go:280 +0x13b4 fp=0xc000241bc8 sp=0xc0002418b8 pc=0x55c305773894 github.com/opencontainers/runc/libcontainer.(*LinuxFactory).StartInitialization(0x0?) /builddir/build/BUILD/runc-1.1.6/GOPATH/src/github.com/opencontainers/runc/GOPATH/src/github.com/opencontainers/runc/libcontainer/factory_linux.go:361 +0x5f3 fp=0xc000241e00 sp=0xc000241bc8 pc=0x55c30575ed33 main.init.0() /builddir/build/BUILD/runc-1.1.6/GOPATH/src/github.com/opencontainers/runc/GOPATH/src/github.com/opencontainers/runc/init.go:36 +0x174 fp=0xc000241e50 sp=0xc000241e00 pc=0x55c305812174 runtime.doInit(0x55c305ec1560) /usr/lib/golang/src/runtime/proc.go:6331 +0x128 fp=0xc000241f80 sp=0xc000241e50 pc=0x55c305461268 runtime.main() /usr/lib/golang/src/runtime/proc.go:233 +0x1d4 fp=0xc000241fe0 sp=0xc000241f80 pc=0x55c305453f54 runtime.goexit() /usr/lib/golang/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000241fe8 sp=0xc000241fe0 pc=0x55c305482c01 goroutine 2 [force gc (idle)]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/lib/golang/src/runtime/proc.go:363 +0xd6 fp=0xc000144fb0 sp=0xc000144f90 pc=0x55c305454356 runtime.goparkunlock(...) /usr/lib/golang/src/runtime/proc.go:369 runtime.forcegchelper() /usr/lib/golang/src/runtime/proc.go:302 +0xad fp=0xc000144fe0 sp=0xc000144fb0 pc=0x55c3054541ed runtime.goexit() /usr/lib/golang/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000144fe8 sp=0xc000144fe0 pc=0x55c305482c01 created by runtime.init.7 /usr/lib/golang/src/runtime/proc.go:290 +0x25 goroutine 3 [GC sweep wait]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/lib/golang/src/runtime/proc.go:363 +0xd6 fp=0xc000145790 sp=0xc000145770 pc=0x55c305454356 runtime.goparkunlock(...) /usr/lib/golang/src/runtime/proc.go:369 runtime.bgsweep(0x0?) /usr/lib/golang/src/runtime/mgcsweep.go:278 +0x8e fp=0xc0001457c8 sp=0xc000145790 pc=0x55c3054408ae runtime.gcenable.func1() /usr/lib/golang/src/runtime/mgc.go:178 +0x26 fp=0xc0001457e0 sp=0xc0001457c8 pc=0x55c305435546 runtime.goexit() /usr/lib/golang/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0001457e8 sp=0xc0001457e0 pc=0x55c305482c01 created by runtime.gcenable /usr/lib/golang/src/runtime/mgc.go:178 +0x6b goroutine 4 [runnable]: runtime.gopark(0xc00002c070?, 0x55c3058e1848?, 0x1?, 0x0?, 0x0?) /usr/lib/golang/src/runtime/proc.go:363 +0xd6 fp=0xc000145f70 sp=0xc000145f50 pc=0x55c305454356 runtime.goparkunlock(...) /usr/lib/golang/src/runtime/proc.go:369 runtime.(*scavengerState).park(0x55c305ed5160) /usr/lib/golang/src/runtime/mgcscavenge.go:389 +0x53 fp=0xc000145fa0 sp=0xc000145f70 pc=0x55c30543e953 runtime.bgscavenge(0x0?) /usr/lib/golang/src/runtime/mgcscavenge.go:617 +0x45 fp=0xc000145fc8 sp=0xc000145fa0 pc=0x55c30543ef25 runtime.gcenable.func2() /usr/lib/golang/src/runtime/mgc.go:179 +0x26 fp=0xc000145fe0 sp=0xc000145fc8 pc=0x55c3054354e6 runtime.goexit() /usr/lib/golang/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000145fe8 sp=0xc000145fe0 pc=0x55c305482c01 created by runtime.gcenable /usr/lib/golang/src/runtime/mgc.go:179 +0xaa goroutine 18 [finalizer wait]: runtime.gopark(0x55c305ed5920?, 0xc0001824e0?, 0x0?, 0x0?, 0xc000144770?) /usr/lib/golang/src/runtime/proc.go:363 +0xd6 fp=0xc000144628 sp=0xc000144608 pc=0x55c305454356 runtime.goparkunlock(...) /usr/lib/golang/src/runtime/proc.go:369 runtime.runfinq() /usr/lib/golang/src/runtime/mfinal.go:180 +0x10f fp=0xc0001447e0 sp=0xc000144628 pc=0x55c30543464f runtime.goexit() /usr/lib/golang/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0001447e8 sp=0xc0001447e0 pc=0x55c305482c01 created by runtime.createfing /usr/lib/golang/src/runtime/mfinal.go:157 +0x45 goroutine 6 [GC worker (idle)]: runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?) /usr/lib/golang/src/runtime/proc.go:363 +0xd6 fp=0xc000146750 sp=0xc000146730 pc=0x55c305454356 runtime.gcBgMarkWorker() /usr/lib/golang/src/runtime/mgc.go:1235 +0xf1 fp=0xc0001467e0 sp=0xc000146750 pc=0x55c3054376b1 runtime.goexit() /usr/lib/golang/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0001467e8 sp=0xc0001467e0 pc=0x55c305482c01 created by runtime.gcBgMarkStartWorkers /usr/lib/golang/src/runtime/mgc.go:1159 +0x25
Expected results:
- Containers to run smoothly
Additional info:
It seems to be a panic in netpoll_epoll, notably here: https://cs.opensource.google/go/go/+/release-branch.go1.14:src/runtime/netpoll_epoll.go;l=119-123 This appears to happen due to the numbering of the file descriptors. If runc init is called without FD 0,1,2 set, then it appears it can panic like so: https://github.com/golang/go/issues/68333
- links to