Closed
Description
What version of Go are you using (go version
)?
$ go version go version go1.13.4 darwin/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/Users/rilke/Library/Caches/go-build" GOENV="/Users/rilke/Library/Application Support/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/rilke/go" GOPRIVATE="" GOPROXY="https://goproxy.io,direct" GOROOT="/usr/local/Cellar/go/1.13.4/libexec" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/Cellar/go/1.13.4/libexec/pkg/tool/darwin_amd64" GCCGO="gccgo" AR="ar" 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/jg/d03tz52x12g_xf_x7cmdtn840000gn/T/go-build179904585=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
I run the code below, and open the url http://localhost:6060/debug/pprof/goroutine?debug=1 in my browser. But the page never show and the string "xx" stop printing, which means goroutine2 stop running.
package main
import (
"fmt"
"net/http"
_ "net/http/pprof"
)
func main() {
//goroutine1
go func() {
for {
}
}()
//goroutine2
go func() {
for {
fmt.Println("xx")
}
}()
http.ListenAndServe("0.0.0.0:6060", nil)
}
What did you expect to see?
I expect the page http://localhost:6060/debug/pprof/goroutine?debug=1 to be loaded normally, and goroutine2 should not stop printing
What did you see instead?
The page http://localhost:6060/debug/pprof/goroutine?debug=1 never load and goroutine2 stop printing when I visit the url http://localhost:6060/debug/pprof/goroutine?debug=1 in my browser.
Activity
hyangah commentedon Nov 18, 2019
Seems like #10958 - for goroutine profile, runtime tries to stop the world.
ianlancetaylor commentedon Nov 18, 2019
Don't write busy loops in Go.
That said, this should work better in the upcoming Go 1.14 release. Closing as dup of #10958.