mirror of
https://github.com/NixOS/nix.git
synced 2025-12-14 21:11:04 +01:00
Create DerivationBuilder::killChild
Then the derivation building goal doesn't need to snoop around as much.
This commit is contained in:
parent
49da508f46
commit
4388e3dcb5
3 changed files with 31 additions and 19 deletions
|
|
@ -84,22 +84,8 @@ void DerivationBuildingGoal::killChild()
|
|||
hook.reset();
|
||||
#endif
|
||||
#ifndef _WIN32 // TODO enable `DerivationBuilder` on Windows
|
||||
if (builder && builder->pid != -1) {
|
||||
if (builder && builder->killChild())
|
||||
worker.childTerminated(this);
|
||||
|
||||
// FIXME: move this into DerivationBuilder.
|
||||
|
||||
/* If we're using a build user, then there is a tricky race
|
||||
condition: if we kill the build user before the child has
|
||||
done its setuid() to the build user uid, then it won't be
|
||||
killed, and we'll potentially lock up in pid.wait(). So
|
||||
also send a conventional kill to the child. */
|
||||
::kill(-builder->pid, SIGKILL); /* ignore the result */
|
||||
|
||||
builder->killSandbox(true);
|
||||
|
||||
builder->pid.wait();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue