New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
syscall: StartProcess blocked at acquire lock #26836
Comments
/cc @ianlancetaylor |
What you are describing sounds like a clear bug, but I do not recall any similar reports. The fork lock is only held briefly and I do not know of any code path in which it could be left locked. Is there any way that we can reproduce the problem ourselves? Is it possible that the kernel is sometimes killing a single thread of your program? |
Our server use a customized kernel based on linux 4.1. And I had checked the kernel messages, and found nothing seems related to this problem. I wrote a simple test program which randomly starts child processes, and have not reproduced yet. I have tried upgrade the golang version to 1.10.3, and deploys the new version to parts of our production servers, I will check if it can reproduce in this new version |
The |
@crvv |
How's it going @wushukai? Any more returns of this bug? Able to perhaps isolate a reproduction? |
@odeke-em The problem was gone after we upgraded to 1.10.3. we had have some experiments in our test environment using version 1.8.3, but had no luck to reproduce.. |
Thank you for the update @wushukai! Given that this bug is elusive/no pulse yet to reproduce it after Go1.10, perhaps we could: @ianlancetaylor what do you think we should do? |
It sounds like it can be reproduced in newer versions of Go, so I think we can close this. Thanks. |
What version of Go are you using (
go version
)?go version go1.8.3 linux/amd64
Does this issue reproduce with the latest release?
We have not tested yet.
What operating system and processor architecture are you using (
go env
)?GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/workspace"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build598025583=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
What did you do?
Our service will start subprocess periodically.
And we found some goroutines hanged for competing ForkLock.Lock(), but none succeed. Stack of one blocked goroutine is listed below
And besides the blocked groutines, there are not other stack containing function "forkExec".
The problem occurs sometimes among our production services, but I have not found any way to ensure reproducing this.
Please help provides some clue for debugging this problem...
The text was updated successfully, but these errors were encountered: