nix-daemon: Call exit(), not _exit()
This was preventing destructors from running. In particular, it was
preventing the deletion of the temproot file for each worker
process. It may also have been responsible for the excessive WAL
growth on Hydra (due to the SQLite database not being closed
properly).
Apparently broken by accident in
8e9140cfde
.
This commit is contained in:
parent
f160a30d56
commit
4eb62b5230
|
@ -858,7 +858,8 @@ void killUser(uid_t uid)
|
|||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
pid_t startProcess(std::function<void()> fun, const string & errorPrefix)
|
||||
pid_t startProcess(std::function<void()> fun,
|
||||
bool dieWithParent, const string & errorPrefix, bool runExitHandlers)
|
||||
{
|
||||
pid_t pid = fork();
|
||||
if (pid == -1) throw SysError("unable to fork");
|
||||
|
@ -873,7 +874,10 @@ pid_t startProcess(std::function<void()> fun, const string & errorPrefix)
|
|||
std::cerr << errorPrefix << e.what() << "\n";
|
||||
} catch (...) { }
|
||||
} catch (...) { }
|
||||
_exit(1);
|
||||
if (runExitHandlers)
|
||||
exit(1);
|
||||
else
|
||||
_exit(1);
|
||||
}
|
||||
|
||||
return pid;
|
||||
|
|
|
@ -269,7 +269,8 @@ void killUser(uid_t uid);
|
|||
|
||||
/* Fork a process that runs the given function, and return the child
|
||||
pid to the caller. */
|
||||
pid_t startProcess(std::function<void()> fun, const string & errorPrefix = "error: ");
|
||||
pid_t startProcess(std::function<void()> fun, bool dieWithParent = true,
|
||||
const string & errorPrefix = "error: ", bool runExitHandlers = false);
|
||||
|
||||
|
||||
/* Run a program and return its stdout in a string (i.e., like the
|
||||
|
|
|
@ -924,8 +924,8 @@ static void daemonLoop()
|
|||
to.fd = remote;
|
||||
processConnection(trusted);
|
||||
|
||||
_exit(0);
|
||||
}, "unexpected Nix daemon error: ");
|
||||
exit(0);
|
||||
}, false, "unexpected Nix daemon error: ", true);
|
||||
|
||||
} catch (Interrupted & e) {
|
||||
throw;
|
||||
|
|
Loading…
Reference in New Issue