]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: use RLIMIT_CPU instead of RLIMIT_NOFILE
authorTamir Duberstein <tamird@google.com>
Thu, 27 Jan 2022 15:29:04 +0000 (15:29 +0000)
committerIan Lance Taylor <iant@golang.org>
Wed, 9 Feb 2022 22:06:20 +0000 (22:06 +0000)
The latter is subject to kern.maxfilelimit restrictions on darwin which
are not reflected in the return value. This makes it difficult to
reliably restore the default after the test is complete. RLIMIT_CPU
should hopefully sidestep this problem.

Updates #40564.

Change-Id: Ifb33c7d46f2708130cef366dc245c643a2d5e465
Reviewed-on: https://go-review.googlesource.com/c/go/+/383234
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Trust: Bryan Mills <bcmills@google.com>

src/syscall/syscall_unix_test.go

index e4af0ba4a595f67bd975ded647205310fc228bdf..1ef2634fa17ba7306ae348671c9d4b74243f34f5 100644 (file)
@@ -328,8 +328,7 @@ func TestUnixRightsRoundtrip(t *testing.T) {
 
 func TestRlimit(t *testing.T) {
        var rlimit, zero syscall.Rlimit
-       err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit)
-       if err != nil {
+       if err := syscall.Getrlimit(syscall.RLIMIT_CPU, &rlimit); err != nil {
                t.Fatalf("Getrlimit: save failed: %v", err)
        }
        if zero == rlimit {
@@ -337,31 +336,19 @@ func TestRlimit(t *testing.T) {
        }
        set := rlimit
        set.Cur = set.Max - 1
-       if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && set.Cur > 4096 {
-               // rlim_min for RLIMIT_NOFILE should be equal to
-               // or lower than kern.maxfilesperproc, which on
-               // some machines are 4096. See #40564.
-               set.Cur = 4096
-       }
-       err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set)
-       if err != nil {
+       if err := syscall.Setrlimit(syscall.RLIMIT_CPU, &set); err != nil {
                t.Fatalf("Setrlimit: set failed: %#v %v", set, err)
        }
        var get syscall.Rlimit
-       err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get)
-       if err != nil {
+       if err := syscall.Getrlimit(syscall.RLIMIT_CPU, &get); err != nil {
                t.Fatalf("Getrlimit: get failed: %v", err)
        }
        set = rlimit
        set.Cur = set.Max - 1
-       if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && set.Cur > 4096 {
-               set.Cur = 4096
-       }
        if set != get {
                t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get)
        }
-       err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit)
-       if err != nil {
+       if err := syscall.Setrlimit(syscall.RLIMIT_CPU, &rlimit); err != nil {
                t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err)
        }
 }