aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Miller <miller.research@gmail.com>2018-01-24 16:17:05 +0000
committerDavid du Colombier <0intro@gmail.com>2018-01-25 00:12:18 +0000
commite72e69a3f65232b5b8352259d58a31d30e521efa (patch)
treec33723adcf02e6960ec5d5d868bd923b1c5d8fc2
parent8d88c9ae074d4128556785b7b77ef169edd97c99 (diff)
downloadgo-e72e69a3f65232b5b8352259d58a31d30e521efa.tar.gz
go-e72e69a3f65232b5b8352259d58a31d30e521efa.zip
os: use the syscall version of Getwd for Plan 9
In Plan 9, each OS thread has its own independent working directory, so the Go runtime for Plan 9 needs to coordinate Chdir and Getwd operations to keep the working directory consistent for all goroutines. The function os.Getwd in Plan 9 should always call syscall.Getwd to retrieve the common working directory. Failure to do this was the cause of (at least some of) the intermittent failures in the Plan 9 builders with a seemingly spurious "file does not exist" message, when a thread's working directory had been removed in another thread. Change-Id: Ifb834ad025ee39578234ad3b04d08bc98e939291 Reviewed-on: https://go-review.googlesource.com/89575 Reviewed-by: David du Colombier <0intro@gmail.com> Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-rw-r--r--src/os/getwd.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/os/getwd.go b/src/os/getwd.go
index 87ad8eb137..6d25466bb4 100644
--- a/src/os/getwd.go
+++ b/src/os/getwd.go
@@ -24,7 +24,7 @@ var useSyscallwd = func(error) bool { return true }
// reached via multiple paths (due to symbolic links),
// Getwd may return any one of them.
func Getwd() (dir string, err error) {
- if runtime.GOOS == "windows" {
+ if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
return syscall.Getwd()
}