summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2023-11-08 22:09:57 -0800
committer Colin Cross <ccross@android.com> 2023-11-08 22:11:28 -0800
commit611a2fbdd7a01bce4046db364f7af7000d69ffa1 (patch)
treed013a40ccb3ca4177cca183c1177def64776e274
parentf2fab8347d88216afa60826ea7741435d680acbb (diff)
Fix soong_ui file rlimits for go 1.21
Go 1.21 modifies the file limit but restores the original when execing subprocesses if it hasn't be overridden. Call Setrlimit even if it doesn't appear to be necessary so that the syscall package considers it set. Bug: 309895579 Test: m nothing Change-Id: I4d0b27bac90a2a88bfc68a8491d54dc106e1ec13
-rw-r--r--cmd/soong_ui/main.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go
index 18cba776b..4484a483c 100644
--- a/cmd/soong_ui/main.go
+++ b/cmd/soong_ui/main.go
@@ -680,9 +680,11 @@ func setMaxFiles(ctx build.Context) {
}
ctx.Verbosef("Current file limits: %d soft, %d hard", limits.Cur, limits.Max)
- if limits.Cur == limits.Max {
- return
- }
+
+ // Go 1.21 modifies the file limit but restores the original when
+ // execing subprocesses if it hasn't be overridden. Call Setrlimit
+ // here even if it doesn't appear to be necessary so that the
+ // syscall package considers it set.
limits.Cur = limits.Max
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &limits)