mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
Merge 261f674a25 into 479b6b73a9
This commit is contained in:
commit
4806bf237e
3 changed files with 23 additions and 3 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#include "nix/util/file-system.hh"
|
||||
#include "nix/util/processes.hh"
|
||||
#include "nix/util/signals.hh"
|
||||
#include "nix/util/environment-variables.hh"
|
||||
#include <math.h>
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
|
@ -65,13 +66,27 @@ void setStackSize(size_t stackSize)
|
|||
struct rlimit limit;
|
||||
if (getrlimit(RLIMIT_STACK, &limit) == 0 && static_cast<size_t>(limit.rlim_cur) < stackSize) {
|
||||
savedStackSize = limit.rlim_cur;
|
||||
limit.rlim_cur = std::min(static_cast<rlim_t>(stackSize), limit.rlim_max);
|
||||
if (limit.rlim_max < static_cast<rlim_t>(stackSize)) {
|
||||
if (getEnv("_NIX_TEST_NO_ENVIRONMENT_WARNINGS") != "1") {
|
||||
logger->log(
|
||||
lvlWarn,
|
||||
HintFmt(
|
||||
"Stack size hard limit is %1%, which is less than the desired %2%. If possible, increase the hard limit, e.g. with 'ulimit -Hs %3%'.",
|
||||
limit.rlim_max,
|
||||
stackSize,
|
||||
stackSize / 1024)
|
||||
.str());
|
||||
}
|
||||
}
|
||||
auto requestedSize = std::min(static_cast<rlim_t>(stackSize), limit.rlim_max);
|
||||
limit.rlim_cur = requestedSize;
|
||||
if (setrlimit(RLIMIT_STACK, &limit) != 0) {
|
||||
logger->log(
|
||||
lvlError,
|
||||
HintFmt(
|
||||
"Failed to increase stack size from %1% to %2% (maximum allowed stack size: %3%): %4%",
|
||||
"Failed to increase stack size from %1% to %2% (desired: %3%, maximum allowed: %4%): %5%",
|
||||
savedStackSize,
|
||||
requestedSize,
|
||||
stackSize,
|
||||
limit.rlim_max,
|
||||
std::strerror(errno))
|
||||
|
|
|
|||
|
|
@ -566,7 +566,9 @@ int main(int argc, char ** argv)
|
|||
#ifndef _WIN32
|
||||
// Increase the default stack size for the evaluator and for
|
||||
// libstdc++'s std::regex.
|
||||
nix::setStackSize(64 * 1024 * 1024);
|
||||
// This used to be 64 MiB, but macOS as deployed on GitHub Actions has a
|
||||
// hard limit slightly under that, so we round it down a bit.
|
||||
nix::setStackSize(60 * 1024 * 1024);
|
||||
#endif
|
||||
|
||||
return nix::handleExceptions(argv[0], [&]() { nix::mainWrapped(argc, argv); });
|
||||
|
|
|
|||
|
|
@ -49,6 +49,9 @@ if ! isTestOnNixOS; then
|
|||
fi
|
||||
export _NIX_IN_TEST=$TEST_ROOT/shared
|
||||
export _NIX_TEST_NO_LSOF=1
|
||||
# Suppress warnings that depend on the test environment (e.g., ulimit warnings)
|
||||
# to avoid non-deterministic test failures in golden tests
|
||||
export _NIX_TEST_NO_ENVIRONMENT_WARNINGS=1
|
||||
export NIX_REMOTE=${NIX_REMOTE_-}
|
||||
|
||||
fi # ! isTestOnNixOS
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue