]> Cypherpunks repositories - gostls13.git/commitdiff
runtime2: don't check fcntl errno in checkfds on AIX and Solaris
authorIan Lance Taylor <iant@golang.org>
Tue, 25 Jul 2023 22:14:03 +0000 (15:14 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 25 Jul 2023 23:44:31 +0000 (23:44 +0000)
On AIX and Solaris the errno value is fetched using m.mOS.perrno.
When checkfds is called, that value has not yet been set up by minit.
Since the error value doesn't really matter in checkfds,
don't bother to check it on AIX and Solaris.

Fixes #61584

Change-Id: I4e679ee3fdad4f0b833ae102597b2d6b8cb46cb6
Reviewed-on: https://go-review.googlesource.com/c/go/+/513215
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>

src/runtime/fds_unix.go

index 3004e6fd8b01bbbd2ae6b08493b88379f2a714a8..f39e6a49e9fe80141a178f084a5f7f595f987cb5 100644 (file)
@@ -28,6 +28,16 @@ func checkfds() {
                if ret >= 0 {
                        continue
                }
+
+               // On AIX and Solaris we can't get the right errno
+               // value this early in program startup,
+               // because we haven't yet called minit
+               // which sets m.mOS.perrno.
+               // Just assume that the error is EBADF.
+               if GOOS == "aix" || GOOS == "solaris" {
+                       errno = EBADF
+               }
+
                if errno != EBADF {
                        print("runtime: unexpected error while checking standard file descriptor ", i, ", errno=", errno, "\n")
                        throw("cannot open standard fds")