diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2016-06-28 13:47:50 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2016-06-28 13:47:50 +0200 |
| commit | 2ce72987a65131c23380ad8fdf0aaf9a9618d317 (patch) | |
| tree | 6c4b7c53bd3f19e732bcb64bce407ba25644fe07 /executor/executor.cc | |
| parent | 85da6413f9b8923baf6d2eb5823c32ec41dacfd4 (diff) | |
executor: don't consider failures to remove temp dirs as crashes
There is a number of known, low-frequency reasons for failures in remove_dir.
Make the failures non-fatal.
Fixes #45
Diffstat (limited to 'executor/executor.cc')
| -rw-r--r-- | executor/executor.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/executor/executor.cc b/executor/executor.cc index 4d9ee9f26..b63b7c574 100644 --- a/executor/executor.cc +++ b/executor/executor.cc @@ -902,7 +902,7 @@ retry: // But full sandboxing is expensive, so let's ignore this error for now. exitf("opendir(%s) failed due to NOFILE, exiting"); } - fail("opendir(%s) failed", dir); + exitf("opendir(%s) failed", dir); } while (dirent* ep = readdir(dp)) { if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0) @@ -911,7 +911,7 @@ retry: snprintf(filename, sizeof(filename), "%s/%s", dir, ep->d_name); struct stat st; if (lstat(filename, &st)) - fail("lstat(%s) failed", filename); + exitf("lstat(%s) failed", filename); if (S_ISDIR(st.st_mode)) { remove_dir(filename); continue; @@ -925,10 +925,10 @@ retry: break; } if (errno != EBUSY || i > 100) - fail("unlink(%s) failed", filename); + exitf("unlink(%s) failed", filename); debug("umount(%s)\n", filename); if (umount2(filename, MNT_DETACH)) - fail("umount(%s) failed", filename); + exitf("umount(%s) failed", filename); } } closedir(dp); @@ -944,7 +944,7 @@ retry: if (errno == EBUSY) { debug("umount(%s)\n", dir); if (umount2(dir, MNT_DETACH)) - fail("umount(%s) failed", dir); + exitf("umount(%s) failed", dir); continue; } if (errno == ENOTEMPTY) { @@ -954,7 +954,7 @@ retry: } } } - fail("rmdir(%s) failed", dir); + exitf("rmdir(%s) failed", dir); } } |
