Closed
Description
What version of Go are you using (go version
)?
go version go1.12.7 darwin/amd64
Does this issue reproduce with the latest release?
This is the newest stable version
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/Users/user/Library/Caches/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/user/go" GOPROXY="" GORACE="" GOROOT="/usr/local/Cellar/go/1.12.7/libexec" GOTMPDIR="" GOTOOLDIR="/usr/local/Cellar/go/1.12.7/libexec/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/lq/0sdfc0ps1j5921_9zyy2cmz80000gn/T/go-build771037982=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
The fn given to the singleflight group.Do panicked and was recovered outside the group.Do.
https://play.golang.org/p/s7UKLR6JqRt
What did you expect to see?
The call would be discarded and the lock released.(Maybe the panic would be passed to all waiting calls with the same key)
What did you see instead?
The call panicked but the lock was never released resulting in a deadlock of all following calls with the same key.