summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nix/libstore/gc.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 16519116e4f..f101de92d6b 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -2,6 +2,7 @@
2#include "misc.hh" 2#include "misc.hh"
3#include "local-store.hh" 3#include "local-store.hh"
4 4
5#include <string>
5#include <functional> 6#include <functional>
6#include <queue> 7#include <queue>
7#include <algorithm> 8#include <algorithm>
@@ -226,10 +227,10 @@ static void readTempRoots(PathSet & tempRoots, FDs & fds)
226 //FDPtr fd(new AutoCloseFD(openLockFile(path, false))); 227 //FDPtr fd(new AutoCloseFD(openLockFile(path, false)));
227 //if (*fd == -1) continue; 228 //if (*fd == -1) continue;
228 229
229 /* Try to acquire a write lock without blocking. This can 230 /* Try to acquire a write lock without blocking. This can only
230 only succeed if the owning process has died. In that case 231 succeed if the owning process has died, in which case we don't care
231 we don't care about its temporary roots. */ 232 about its temporary roots, or if we are the owning process. */
232 if (lockFile(*fd, ltWrite, false)) { 233 if (i.name != std::to_string(getpid()) && lockFile(*fd, ltWrite, false)) {
233 printMsg(lvlError, format("removing stale temporary roots file `%1%'") % path); 234 printMsg(lvlError, format("removing stale temporary roots file `%1%'") % path);
234 unlink(path.c_str()); 235 unlink(path.c_str());
235 writeFull(*fd, "d"); 236 writeFull(*fd, "d");