From 5058b40aba825ab6e7b9e518dd1147d1e35fd7de Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Mon, 3 Mar 2025 19:52:04 +0000 Subject: [PATCH] tests: publish: Constrain guix-publish thread use. On systems with more than 64 processors. Otherwise starting so many threads during the test will trip resource limits and lead to a spurious failure with SIGABRT. I'm seeing this on a 128 core system running Guix, and limiting to just 64 processors seems sufficient. * tests/publish.scm: Call setaffinity when the current processor count exceeds 64. Change-Id: Id4c6d7dcc9ae8dd8dafa2587def98f538061425c --- tests/publish.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/publish.scm b/tests/publish.scm index d5ec3c954f..3c80c50d51 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -96,6 +96,20 @@ (lambda () exp ...))))) +;; guix-publish uses (current-processor-count) as the default number of +;; workers, however on a system with a large number of cores, that large +;; number of worker threads being used in the course of these tests can end up +;; hitting resource limits and causing spurious test failures. +;; +;; This will depend on what resource limits are in use, but 64 seems low +;; enough to be able to run the tests without problems. +(let ((max-processors 64)) + (when (> (current-processor-count) + max-processors) + (setaffinity + (getpid) + (make-bitvector max-processors #t)))) + ;; Run a local publishing server in a separate thread. (with-separate-output-ports (call-with-new-thread