google / gvisor

Application Kernel for Containers

Home Page:https://gvisor.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Failed to build Go package using docker+gvisor

cuonglm opened this issue · comments

Description

Failed to run a benchmark of a package of a Go project.

Steps to reproduce

$ docker run --rm -it --runtime=runsc golang:1.17.1 bash
$ git init ./src/github.com/cosmos/cosmos-sdk
$ cd ./src/github.com/cosmos/cosmos-sdk/
$ git remote add origin https://github.com/cosmos/cosmos-sdk.git
$ git config --local gc.auto 0
$ git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +cb9bad4256befb0c68b168ac6d45b8444c86bda0:refs/remote/origin/likhita/add-decimal-support
$ git checkout --progress --force -B likhita/add-decimal-support refs/remote/origin/likhita/add-decimal-support
$ cd x/auth/keeper/
$ go test -run='^$' -bench=. -benchmem -trimpath -timeout=1h
Error Output
go: downloading github.com/regen-network/protobuf v1.3.3-alpha.regen.1
go: downloading github.com/tendermint/tendermint v0.34.12
go: downloading google.golang.org/grpc v1.33.2
go: downloading github.com/stretchr/testify v1.7.0
go: downloading github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25
go: downloading github.com/tendermint/go-amino v0.16.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/tendermint/tm-db v0.6.4
go: downloading github.com/pkg/errors v0.9.1
go: downloading github.com/golang/protobuf v1.5.2
go: downloading github.com/grpc-ecosystem/grpc-gateway v1.16.0
go: downloading github.com/regen-network/cosmos-proto v0.3.1
go: downloading google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c
go: downloading github.com/hashicorp/golang-lru v0.5.4
go: downloading github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
go: downloading github.com/gorilla/mux v1.8.0
go: downloading github.com/rakyll/statik v0.1.7
go: downloading github.com/spf13/cast v1.4.1
go: downloading github.com/confio/ics23/go v0.6.6
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading google.golang.org/protobuf v1.27.1
go: downloading github.com/spf13/cobra v1.2.1
go: downloading github.com/spf13/pflag v1.0.5
go: downloading github.com/spf13/viper v1.8.1
go: downloading github.com/google/btree v1.0.0
go: downloading github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca
go: downloading golang.org/x/net v0.0.0-20210525063256-abc453219eb5
go: downloading github.com/go-kit/kit v0.10.0
go: downloading github.com/go-logfmt/logfmt v0.5.0
go: downloading github.com/cosmos/iavl v0.16.0
go: downloading github.com/armon/go-metrics v0.3.9
go: downloading github.com/prometheus/client_golang v1.11.0
go: downloading github.com/prometheus/common v0.30.0
go: downloading github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87
go: downloading github.com/btcsuite/btcd v0.22.0-beta
go: downloading golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a
go: downloading github.com/gogo/gateway v1.1.0
go: downloading github.com/gorilla/handlers v1.5.1
go: downloading github.com/rs/zerolog v1.25.0
go: downloading github.com/cosmos/go-bip39 v1.0.0
go: downloading github.com/pmezard/go-difflib v1.0.0
go: downloading gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
go: downloading github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76
go: downloading github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15
go: downloading github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d
go: downloading github.com/fsnotify/fsnotify v1.4.9
go: downloading github.com/hashicorp/hcl v1.0.0
go: downloading github.com/magiconair/properties v1.8.5
go: downloading github.com/mitchellh/mapstructure v1.4.1
go: downloading github.com/pelletier/go-toml v1.9.3
go: downloading github.com/spf13/afero v1.6.0
go: downloading github.com/spf13/jwalterweatherman v1.1.0
go: downloading github.com/subosito/gotenv v1.2.0
go: downloading gopkg.in/ini.v1 v1.62.0
go: downloading golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c
go: downloading github.com/hashicorp/go-immutable-radix v1.0.0
go: downloading filippo.io/edwards25519 v1.0.0-beta.2
go: downloading github.com/beorn7/perks v1.0.1
go: downloading github.com/cespare/xxhash/v2 v2.1.1
go: downloading github.com/prometheus/client_model v0.2.0
go: downloading github.com/cespare/xxhash v1.1.0
go: downloading github.com/prometheus/procfs v0.6.0
go: downloading github.com/gorilla/websocket v1.4.2
go: downloading github.com/improbable-eng/grpc-web v0.14.1
go: downloading github.com/matttproud/golang_protobuf_extensions v1.0.1
go: downloading github.com/coinbase/rosetta-sdk-go v0.6.10
go: downloading github.com/rs/cors v1.7.0
go: downloading github.com/felixge/httpsnoop v1.0.1
go: downloading github.com/bgentry/speakeasy v0.1.0
go: downloading github.com/mattn/go-isatty v0.0.14
go: downloading github.com/tendermint/btcd v0.1.1
go: downloading github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b
go: downloading github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2
go: downloading github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c
go: downloading github.com/mtibben/percent v0.2.1
go: downloading github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0
go: downloading github.com/gtank/merlin v0.1.1
go: downloading github.com/gtank/ristretto255 v0.1.2
go: downloading golang.org/x/text v0.3.6
go: downloading github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3
go: downloading github.com/libp2p/go-buffer-pool v0.0.2
go: downloading github.com/Workiva/go-datastructures v1.0.52
go: downloading github.com/minio/highwayhash v1.0.1
go: downloading github.com/google/orderedcode v0.0.1
go: downloading github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f
go: downloading nhooyr.io/websocket v1.8.6
go: downloading golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1
go: downloading github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643
go: downloading github.com/klauspost/compress v1.11.7
# github.com/cosmos/cosmos-sdk/x/auth/keeper.test
unexpected fault address 0x7f9633ce4000
fatal error: fault
unexpected fault address 0x7f962b19220b
fatal error: fault
unexpected fault address 0x7f9632138f7c
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x7f9633ce4000 pc=0x460edc]

goroutine 161 [running]:
runtime.throw({0x66cc67, 0x0})
/usr/local/go/src/runtime/panic.go:1198 +0x71 fp=0xc0007d1c90 sp=0xc0007d1c60 pc=0x434271
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:742 +0x2f6 fp=0xc0007d1ce0 sp=0xc0007d1c90 pc=0x44a696
aeshashbody()
/usr/local/go/src/runtime/asm_amd64.s:1178 +0x13c fp=0xc0007d1ce8 sp=0xc0007d1ce0 pc=0x460edc
runtime.mapaccess2_faststr(0x635c20, 0xc00137a9c0, {0x7f9633ce3fd0, 0x3a})
/usr/local/go/src/runtime/map_faststr.go:174 +0xa2 fp=0xc0007d1d50 sp=0xc0007d1ce8 pc=0x411f42
cmd/link/internal/ld.(*pclntab).generateFilenameTabs.func2(0xc000150000, 0xc86e6)
/usr/local/go/src/cmd/link/internal/ld/pcln.go:410 +0xe5 fp=0xc0007d1dd8 sp=0xc0007d1d50 pc=0x5ae005
cmd/link/internal/ld.writeBlock(0xc000150000, 0x0, 0xc000802000, {0xc0050bf600, 0x1dde, 0x0}, 0x0, 0x0, {0x867280, 0x200, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:997 +0x3e5 fp=0xc0007d1f08 sp=0xc0007d1dd8 pc=0x555e45
cmd/link/internal/ld.writeBlocks.func1(0x0, 0x0, {0xc0050bf600, 0x0, 0x0}, 0x0, 0x0, {0x867280, 0x200, 0x200})
/usr/local/go/src/cmd/link/internal/ld/data.go:951 +0x76 fp=0xc0007d1f80 sp=0xc0007d1f08 pc=0x5559d6
cmd/link/internal/ld.writeBlocks·dwrap·2()
/usr/local/go/src/cmd/link/internal/ld/data.go:954 +0x63 fp=0xc0007d1fe0 sp=0xc0007d1f80 pc=0x555923
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc0007d1fe8 sp=0xc0007d1fe0 pc=0x463be1
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585

goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc001a31040)
/usr/local/go/src/runtime/sema.go:56 +0x25
sync.(*WaitGroup).Wait(0xc0033b9d70)
/usr/local/go/src/sync/waitgroup.go:130 +0x71
cmd/link/internal/ld.asmb(0xc000150000)
/usr/local/go/src/cmd/link/internal/ld/asmb.go:62 +0x1c5
cmd/link/internal/ld.Main(_, {0x20, 0x20, 0x1, 0x7, 0x10, 0x0, {0x0, 0x0}, {0x678979, ...}, ...})
/usr/local/go/src/cmd/link/internal/ld/main.go:343 +0x137f
main.main()
/usr/local/go/src/cmd/link/main.go:69 +0x1005

goroutine 97 [semacquire]:
sync.runtime_Semacquire(0x0)
/usr/local/go/src/runtime/sema.go:56 +0x25
sync.(*WaitGroup).Wait(0x634c00)
/usr/local/go/src/sync/waitgroup.go:130 +0x71
cmd/link/internal/ld.writeBlocks(0xc000150000, 0xc000a4f030, 0xc0001380e0, 0xc000802000, {0xc005000000, 0x19c9e, 0x19c9e}, 0x1362000, 0x11dc488, {0x867280, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:966 +0x5fa
cmd/link/internal/ld.writeDatblkToOutBuf(...)
/usr/local/go/src/cmd/link/internal/ld/data.go:1048
cmd/link/internal/ld.datblk(0x2, 0xc0033b9c10, 0x43dcc5, 0x1)
/usr/local/go/src/cmd/link/internal/ld/data.go:1036 +0x65
cmd/link/internal/ld.writeParallel.func1()
/usr/local/go/src/cmd/link/internal/ld/data.go:1030 +0x70
created by cmd/link/internal/ld.writeParallel
/usr/local/go/src/cmd/link/internal/ld/data.go:1028 +0x1a5

goroutine 145 [running]:
goroutine running on other thread; stack unavailable
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585

goroutine 130 [runnable]:
cmd/link/internal/ld.(*OutBuf).WriteSym(0xc0007e4000, 0xc000802000, 0xcc0cd)
/usr/local/go/src/cmd/link/internal/ld/outbuf.go:300 +0x195
cmd/link/internal/ld.writeBlock(0xc000150000, 0x0, 0xc000802000, {0xc0050706e0, 0xbbc2, 0x0}, 0x0, 0x0, {0x867280, 0x200, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:994 +0x38c
cmd/link/internal/ld.writeBlocks.func1(0xc003824000, 0xc34, {0xc0050706e0, 0x2200000000000000, 0x66}, 0xc0033b9cf0, 0xc0012fe000, {0x867280, 0x200, 0x200})
/usr/local/go/src/cmd/link/internal/ld/data.go:951 +0x76
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585

goroutine 36 [runnable]:
cmd/link/internal/loader.Reloc.Sym({0x7f96396b82b9, 0xc000142f80, 0xc000802000})
/usr/local/go/src/cmd/link/internal/loader/loader.go:59 +0x53
cmd/link/internal/ld.(*relocSymState).relocsym(0xc0005f0e98, 0x5101, {0x7f962674ae40, 0xc0, 0x10981c0})
/usr/local/go/src/cmd/link/internal/ld/data.go:196 +0x1ba
cmd/link/internal/ld.writeBlock(0xc000150000, 0x0, 0xc000802000, {0xc00503a8c0, 0x12786, 0x0}, 0x0, 0x0, {0x867280, 0x200, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:995 +0x3ac
cmd/link/internal/ld.writeBlocks.func1(0x0, 0x43dcc5, {0xc00503a8c0, 0xc00000000000000, 0x24}, 0xc0033b9cf0, 0xc0012fe000, {0x867280, 0x200, 0x200})
/usr/local/go/src/cmd/link/internal/ld/data.go:951 +0x76
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585

goroutine 38 [runnable]:
cmd/link/internal/loader.(*Loader).resolve(0xc000802000, 0xc000143f00, {0x7ffffffd, 0x571})
/usr/local/go/src/cmd/link/internal/loader/loader.go:636 +0x1f0
cmd/link/internal/loader.(*FuncInfo).Funcdata(0xc0007cfb30, {0xc0007cfbd0, 0x4ddbfa, 0x866320})
/usr/local/go/src/cmd/link/internal/loader/loader.go:1992 +0xc7
cmd/link/internal/ld.funcData({0xc000802000, 0xc000143f00, {0x7f96373aa276, 0x68, 0x68}, {0x7f9637354fce, 0x10, 0x10}, {0x2, 0x30, ...}}, ...)
/usr/local/go/src/cmd/link/internal/ld/pcln.go:615 +0x1b1
cmd/link/internal/ld.(*pclntab).writeFuncData(0xc000b3a000, 0xc000150000, 0xc000142080, {0xc0001fc000, 0xa9d9, 0x5ab292}, 0xc0007cfdb8, {0xc003280000, 0xa9d9, 0xa9d9}, ...)
/usr/local/go/src/cmd/link/internal/ld/pcln.go:723 +0x259
cmd/link/internal/ld.(*pclntab).generateFunctab.func1(0xc000150000, 0xcc0b6)
/usr/local/go/src/cmd/link/internal/ld/pcln.go:566 +0x25b
cmd/link/internal/ld.writeBlock(0xc000150000, 0x0, 0xc000802000, {0xc0050bf618, 0x1ddb, 0x0}, 0x0, 0x0, {0x867280, 0x200, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:997 +0x3e5
cmd/link/internal/ld.writeBlocks.func1(0x0, 0x43dcc5, {0xc0050bf618, 0xc00000000000000, 0x24}, 0xc0033b9cf0, 0xc0012fe000, {0x867280, 0x200, 0x200})
/usr/local/go/src/cmd/link/internal/ld/data.go:951 +0x76
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585

goroutine 35 [running]:
goroutine running on other thread; stack unavailable
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585
[signal SIGSEGV: segmentation violation code=0x1 addr=0x7f9632138f7c pc=0x464b70]

goroutine 35 [running]:
runtime.throw({0x66cc67, 0x19})
/usr/local/go/src/runtime/panic.go:1198 +0x71 fp=0xc0005efd00 sp=0xc0005efcd0 pc=0x434271
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:742 +0x2f6 fp=0xc0005efd50 sp=0xc0005efd00 pc=0x44a696
runtime.memmove()
/usr/local/go/src/runtime/memmove_amd64.s:185 +0x130 fp=0xc0005efd58 sp=0xc0005efd50 pc=0x464b70
cmd/link/internal/ld.(*OutBuf).WriteSym(0xc004bba000, 0xc000802000, 0xcc0cb)
/usr/local/go/src/cmd/link/internal/ld/outbuf.go:300 +0x195 fp=0xc0005efdd8 sp=0xc0005efd58 pc=0x5ab675
cmd/link/internal/ld.writeBlock(0xc000150000, 0x0, 0xc000802000, {0xc005000008, 0x19c9d, 0x0}, 0x0, 0x0, {0x867280, 0x200, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:994 +0x38c fp=0xc0005eff08 sp=0xc0005efdd8 pc=0x555dec
cmd/link/internal/ld.writeBlocks.func1(0x0, 0x43dcc5, {0xc005000008, 0xa00000000000000, 0x1e}, 0xc0033b9cf0, 0xc0012fe000, {0x867280, 0x200, 0x200})
/usr/local/go/src/cmd/link/internal/ld/data.go:951 +0x76 fp=0xc0005eff80 sp=0xc0005eff08 pc=0x5559d6
cmd/link/internal/ld.writeBlocks·dwrap·2()
/usr/local/go/src/cmd/link/internal/ld/data.go:954 +0x63 fp=0xc0005effe0 sp=0xc0005eff80 pc=0x555923
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc0005effe8 sp=0xc0005effe0 pc=0x463be1
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585
[signal SIGSEGV: segmentation violation code=0x1 addr=0x7f962b19220b pc=0x464b81]

goroutine 145 [running]:
runtime.throw({0x66cc67, 0xc004baed78})
/usr/local/go/src/runtime/panic.go:1198 +0x71 fp=0xc004baed00 sp=0xc004baecd0 pc=0x434271
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:742 +0x2f6 fp=0xc004baed50 sp=0xc004baed00 pc=0x44a696
runtime.memmove()
/usr/local/go/src/runtime/memmove_amd64.s:191 +0x141 fp=0xc004baed58 sp=0xc004baed50 pc=0x464b81
cmd/link/internal/ld.(*OutBuf).WriteSym(0xc0007e4070, 0xc000802000, 0x4efed)
/usr/local/go/src/cmd/link/internal/ld/outbuf.go:300 +0x195 fp=0xc004baedd8 sp=0xc004baed58 pc=0x5ab675
cmd/link/internal/ld.writeBlock(0xc000150000, 0x0, 0xc000802000, {0xc0050a73f0, 0x4e20, 0x0}, 0x0, 0x0, {0x867280, 0x200, ...})
/usr/local/go/src/cmd/link/internal/ld/data.go:994 +0x38c fp=0xc004baef08 sp=0xc004baedd8 pc=0x555dec
cmd/link/internal/ld.writeBlocks.func1(0xc003e52000, 0x2974, {0xc0050a73f0, 0x900000000000000, 0x1b}, 0xc0033b9cf0, 0xc0012fe000, {0x867280, 0x200, 0x200})
/usr/local/go/src/cmd/link/internal/ld/data.go:951 +0x76 fp=0xc004baef80 sp=0xc004baef08 pc=0x5559d6
cmd/link/internal/ld.writeBlocks·dwrap·2()
/usr/local/go/src/cmd/link/internal/ld/data.go:954 +0x63 fp=0xc004baefe0 sp=0xc004baef80 pc=0x555923
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc004baefe8 sp=0xc004baefe0 pc=0x463be1
created by cmd/link/internal/ld.writeBlocks
/usr/local/go/src/cmd/link/internal/ld/data.go:950 +0x585
FAIL github.com/cosmos/cosmos-sdk/x/auth/keeper [build failed]

runsc version

runsc version release-20210906.0-30-g477d7e5e1037
spec: 1.0.2


### docker version (if using docker)

```shell
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:54:27 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:33 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

uname

Linux cuonglm-ThinkPad-X1-Carbon-7th 5.11.0-27-generic #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

kubectl (if using Kubernetes)

No response

repo state (if built from source)

release-20210906.0-30-g477d7e5e1

runsc debug logs (if available)

No response

Note that if I use runc, then the benchmark run ok.

@cuonglm I can run your repro steps without hitting the error you mentioned. Are you setting an specific platform or just using the default (ptrace)? Can you try again from HEAD?

$ docker run --rm -it --runtime=runsc golang:1.17.1 bash
...
go: downloading github.com/klauspost/compress v1.11.7
goos: linux
goarch: amd64
pkg: github.com/cosmos/cosmos-sdk/x/auth/keeper
BenchmarkAccountMapperGetAccountFound-6   	  696766	      1749 ns/op	     344 B/op	       8 allocs/op
BenchmarkAccountMapperSetAccount-6        	  279448	      5189 ns/op	    1839 B/op	      32 allocs/op
PASS
ok  	github.com/cosmos/cosmos-sdk/x/auth/keeper	10.521s

Are you setting an specific platform or just using the default (ptrace)?

Yes, I don't set any specific setting, just clone the repo, build runsc then run above command.

Can you try again from HEAD?

Sure.

I tried your repro with the ptrace platform and the kvm platform, but it didn't reproduce the issue. Feel free to reopen the issue, if you will be able to reproduce it and collect runsc logs.