about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/build.cc2
-rw-r--r--src/libutil/util.cc4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 36436d7eb2cd..127fcfd650f7 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -1918,7 +1918,7 @@ void DerivationGoal::startBuilder()
     options.allowVfork = !buildUser.enabled();
     pid = startProcess([&]() {
         runChild();
-    });
+    }, options);
 
     /* parent */
     pid.setSeparatePG(true);
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 5895e7200e96..a91cf26aaa66 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -850,7 +850,7 @@ void killUser(uid_t uid)
         }
 
         _exit(0);
-    });
+    }, options);
 
     int status = pid.wait(true);
     if (status != 0)
@@ -885,7 +885,7 @@ static pid_t doFork(bool allowVfork, std::function<void()> fun)
 pid_t startProcess(std::function<void()> fun, const ProcessOptions & options)
 {
     auto wrapper = [&]() {
-        _writeToStderr = 0;
+        if (!options.allowVfork) _writeToStderr = 0;
         try {
 #if __linux__
             if (options.dieWithParent && prctl(PR_SET_PDEATHSIG, SIGKILL) == -1)