aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjulia <midnight@trainwit.ch>2024-05-17 01:10:44 +0000
committerGerrit Code Review <gerrit@lix-systems>2024-05-17 01:10:44 +0000
commit005ee33a9a145f714f4837b1c0b5c430ac3bc588 (patch)
tree1bdc62353709a94bce69996ceb8db4ee8f830a1e /src
parent5756be19f65f125276e6f36ec6e624b06001bc70 (diff)
parent5b7dcb3005ed38d4634f228f01852ae18b2d9cd4 (diff)
Merge "Allow enabling core dumps from builds for nix & child processes" into main
Diffstat (limited to 'src')
-rw-r--r--src/libstore/build/local-derivation-goal.cc3
-rw-r--r--src/libstore/globals.hh9
2 files changed, 12 insertions, 0 deletions
diff --git a/src/libstore/build/local-derivation-goal.cc b/src/libstore/build/local-derivation-goal.cc
index 3429afafa..cdbd0f5a7 100644
--- a/src/libstore/build/local-derivation-goal.cc
+++ b/src/libstore/build/local-derivation-goal.cc
@@ -1977,6 +1977,9 @@ void LocalDerivationGoal::runChild()
/* Disable core dumps by default. */
struct rlimit limit = { 0, RLIM_INFINITY };
+ if (settings.enableCoreDumps) {
+ limit.rlim_cur = RLIM_INFINITY;
+ }
setrlimit(RLIMIT_CORE, &limit);
// FIXME: set other limits to deterministic values?
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 16af3a415..8856d8fae 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -290,6 +290,15 @@ public:
Setting<off_t> reservedSize{this, 8 * 1024 * 1024, "gc-reserved-space",
"Amount of reserved disk space for the garbage collector."};
+ Setting<bool> enableCoreDumps{
+ this, false, "enable-core-dumps",
+ R"(
+ If set to `false` (the default), `RLIMIT_CORE` has a soft limit of zero.
+ If set to `true`, the soft limit is infinite.
+
+ The hard limit is always infinite.
+ )"};
+
Setting<bool> fsyncMetadata{
this, true, "fsync-metadata",
R"(