]> Cypherpunks repositories - gostls13.git/commitdiff
os: use the syscall version of Getwd for Plan 9
authorRichard Miller <miller.research@gmail.com>
Wed, 24 Jan 2018 16:17:05 +0000 (16:17 +0000)
committerDavid du Colombier <0intro@gmail.com>
Thu, 25 Jan 2018 00:12:18 +0000 (00:12 +0000)
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>

src/os/getwd.go

index 87ad8eb13703e50f1c0b6aaf45464dcd69890982..6d25466bb44e27070ed8cc469941f150f52a3c90 100644 (file)
@@ -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()
        }