The Go programming language
Go to file
Dmitriy Vyukov 5695915833 runtime: fix spurious deadlock reporting
Fixes #2337.
Unfortunate sequence of events is:
1. maxcpu=2, mcpu=1, grunning=1
2. starttheworld creates an extra M:
   maxcpu=2, mcpu=2, grunning=1
4. the goroutine calls runtime.GOMAXPROCS(1)
   maxcpu=1, mcpu=2, grunning=1
5. since it sees mcpu>maxcpu, it calls gosched()
6. schedule() deschedules the goroutine:
   maxcpu=1, mcpu=1, grunning=0
7. schedule() call getnextandunlock() which
   fails to pick up the goroutine again,
   because canaddcpu() fails, because mcpu==maxcpu
8. then it sees that grunning==0,
   reports deadlock and terminates

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5191044
2011-10-06 18:10:14 +03:00
doc doc: document r60.2 2011-10-05 13:59:39 -07:00
include 5a, 5c, 6a, 6c, 8a, 8c: fix Windows file paths 2011-09-07 15:49:56 -04:00
lib codereview: fix for Mercurial 1.9.2 2011-10-05 12:08:41 -04:00
misc misc/emacs: fix indent bug 2011-10-05 12:27:23 -04:00
src runtime: fix spurious deadlock reporting 2011-10-06 18:10:14 +03:00
test runtime: fix spurious deadlock reporting 2011-10-06 18:10:14 +03:00
.hgignore codereview: save CL messages in $(hg root)/last-change 2011-09-20 14:56:15 -04:00
.hgtags tag release.r60.2 2011-10-05 14:33:18 -07:00
AUTHORS A&C: Add Paul Sbarra. 2011-09-22 13:05:13 +10:00
CONTRIBUTORS A&C: Add Paul Sbarra. 2011-09-22 13:05:13 +10:00
favicon.ico add a favicon plus a couple of hi-res versions of gordon 2009-10-26 10:13:07 -07:00
LICENSE LICENSE: separate, change PATENTS text 2010-12-06 16:31:59 -05:00
PATENTS LICENSE: separate, change PATENTS text 2010-12-06 16:31:59 -05:00
README build: update, streamline documentation for new $GOBIN 2010-08-24 20:00:50 -04:00
robots.txt godoc: serve robots.txt raw 2011-02-19 05:46:20 +11:00

This is the source code repository for the Go programming language.  

For documentation about how to install and use Go,
visit http://golang.org/ or load doc/install.html in your web browser.

After installing Go, you can view a nicely formatted
doc/install.html by running godoc --http=:6060
and then visiting http://localhost:6060/doc/install.html.

Unless otherwise noted, the Go source files are distributed
under the BSD-style license found in the LICENSE file.

--

Binary Distribution Notes

If you have just untarred a binary Go distribution, you need to set
the environment variable $GOROOT to the full path of the go
directory (the one containing this README).  You can omit the
variable if you unpack it into /usr/local/go, or if you rebuild
from sources by running all.bash (see doc/install.html).
You should also add the Go binary directory $GOROOT/bin
to your shell's path.

For example, if you extracted the tar file into $HOME/go, you might
put the following in your .profile:

    export GOROOT=$HOME/go
    export PATH=$PATH:$GOROOT/bin

See doc/install.html for more details.