about summary refs log tree commit diff
path: root/src/libstore/build.cc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-11-15T18·35+0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-11-15T18·35+0100
commitf794465ca8bd2a8d41ee3b6928db5fb1479dc96d (patch)
tree972ed5f7b7327444556b0cdd2c92697a44575673 /src/libstore/build.cc
parent8541d27fce95f1f6a4a6c89bcbc09503ff7ea092 (diff)
Disable use of vfork()
vfork() is just too weird.  For instance, in this build:

  http://hydra.nixos.org/build/3330487

the value fromHook.writeSide becomes corrupted in the parent, even
though the child only reads from it.  At -O0 the problem goes away.
Probably the child is overriding some spilled temporary variable.

If I get bored I may implement using posix_spawn() instead.
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r--src/libstore/build.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 2fd071ebad92..9e0db9ee7f0a 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -355,7 +355,7 @@ void Goal::trace(const format & f)
 
 
 /* Common initialisation performed in child processes. */
-void commonChildInit(Pipe & logPipe)
+static void commonChildInit(Pipe & logPipe)
 {
     /* Put the child in a separate session (and thus a separate
        process group) so that it has no controlling terminal (meaning