-
Notifications
You must be signed in to change notification settings - Fork 18.7k
Closed
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.OS-Linuxarch-ppc64xcompiler/runtimeIssues related to the Go compiler and/or runtime.Issues related to the Go compiler and/or runtime.
Milestone
Description
What version of Go are you using (go version)?
$ go version 1.20.2, master
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
Linux Ubuntu 22.04, ppc64le
go env Output
$ go env GO111MODULE="" GOARCH="ppc64le" GOBIN="" GOCACHE="/root/.cache/go-build" GOENV="/root/.config/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="ppc64le" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/root/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/root/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/sumit/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/sumit/go/pkg/tool/linux_ppc64le" GOVCS="" GOVERSION="devel go1.21-0aa14fca8c Wed Mar 22 21:17:50 2023 +0000" GCCGO="gccgo" GOPPC64="power8" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/dev/null" GOWORK="" CGO_CFLAGS="-O2 -g" CGO_CPPFLAGS="" CGO_CXXFLAGS="-O2 -g" CGO_FFLAGS="-O2 -g" CGO_LDFLAGS="-O2 -g" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1361577659=/tmp/go-build -gno-record-gcc-switches"
What did you do?
SIGSEGV here: https://github.com/minio/minio/blob/0ff931dc765d5d8fdddcdf7687fec1b0b194fca9/cmd/bucket-replication-stats.go#L371
Ran following script on a fresh ppc64le Ubuntu 22.04 docker container (takes 15 min):
set -ex
CWD=$(pwd)
#Install linux deps
if [ -f /etc/redhat-release ] ; then
yum install wget git gcc make gcc-c++ curl -y
else
apt-get update -y
apt-get install wget git build-essential curl -y
fi
#Install golang 1.20.1
wget https://go.dev/dl/go1.20.1.linux-ppc64le.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.20.1.linux-ppc64le.tar.gz
rm -rf go1.20.1.linux-ppc64le.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
#Build and install golang/go master
git clone https://go.googlesource.com/go
cd go
git checkout master
cd src
./all.bash || true
PATH=$CWD/go/bin:$PATH
go version
cd ../../
#Install mc
curl -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-ppc64le/mc
chmod +x /usr/local/bin/mc
#Clone
git clone https://github.com/minio/minio.git
cd minio
git checkout RELEASE.2023-02-27T18-10-45Z
#Build
go mod tidy
make build
chmod +x minio
#Test
rm -rf /home/share
./minio server --address 127.0.0.1:9000 /home/share &
sleep 10
mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin
mc mb myminio/tns-bucket2
mc cp $(which mc) myminio/tns-bucket2
mc ls myminio/tns-bucket2
set +ex
echo "Please wait for 360 seconds for the crash..."
secs=$((6 * 60))
while [ $secs -gt 0 ]; do
echo -ne "$secs\033[0K\r"
sleep 1
: $((secs--))
done
What did you expect to see?
No crash
What did you see instead?
unexpected fault address 0xffffffffffffefc8
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x3 addr=0xffffffffffffefc8 pc=0x1a3ec48]
goroutine 350 [running]:
runtime.throw({0x243009a?, 0x1a3e7b8?})
runtime/panic.go:1076 +0x40 fp=0xc003f6a8d8 sp=0xc003f6a898 pc=0x4b050
runtime.sigpanic()
runtime/signal_unix.go:851 +0x260 fp=0xc003f6a948 sp=0xc003f6a8d8 pc=0x64a50
github.com/minio/minio/cmd.(*ReplicationStats).calculateBucketReplicationStats(0xc002964690, {0xc006d50c80, 0xb}, {0x17f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, ...}, ...)
github.com/minio/minio/cmd/bucket-replication-stats.go:371 +0x968 fp=0xc003f79b90 sp=0xc003f6a968 pc=0x1a3ec48
github.com/minio/minio/cmd.(*ReplicationStats).getAllLatest(0x0?, 0xc0070af4d0)
github.com/minio/minio/cmd/bucket-replication-stats.go:282 +0x1f0 fp=0xc003f79e28 sp=0xc003f79b90 pc=0x1a3e0c0
github.com/minio/minio/cmd.(*ReplicationPool).saveStatsToDisk(0xc00054bce0)
github.com/minio/minio/cmd/bucket-replication.go:3076 +0x258 fp=0xc003f79f98 sp=0xc003f79e28 pc=0x1a68108
github.com/minio/minio/cmd.NewReplicationPool.func5()
github.com/minio/minio/cmd/bucket-replication.go:1612 +0x4c fp=0xc003f79fc0 sp=0xc003f79f98 pc=0x1a5bd3c
runtime.goexit()
runtime/asm_ppc64x.s:900 +0x4 fp=0xc003f79fc0 sp=0xc003f79fc0 pc=0x85214
created by github.com/minio/minio/cmd.NewReplicationPool in goroutine 64
github.com/minio/minio/cmd/bucket-replication.go:1612 +0x5e4
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.OS-Linuxarch-ppc64xcompiler/runtimeIssues related to the Go compiler and/or runtime.Issues related to the Go compiler and/or runtime.