summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-02-15 22:55:51 +0100
committerLudovic Courtès <ludo@gnu.org>2018-02-27 14:08:11 +0100
commita861d7d5bd997d0776f840847186fc198e87e1d9 (patch)
tree6a4e8d18632748c68088b1f08861bfdca06b4973
parentf5a15cab510178d46ea5dc7a79fd7bb96fd679f3 (diff)
downloadcuirass-a861d7d5bd997d0776f840847186fc198e87e1d9.tar
cuirass-a861d7d5bd997d0776f840847186fc198e87e1d9.tar.gz
logging: "Defensive programming" for 'log-monitoring-stats'.
I've seen 'scandir' report #f once, even though that's theoretically impossible. * src/cuirass/logging.scm (log-monitoring-stats): Return '() if 'scandir' returns #f.
-rw-r--r--src/cuirass/logging.scm9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/cuirass/logging.scm b/src/cuirass/logging.scm
index 12d156c..6258eed 100644
--- a/src/cuirass/logging.scm
+++ b/src/cuirass/logging.scm
@@ -71,6 +71,9 @@
(/ (assoc-ref (gc-stats) 'heap-size) (expt 2. 20))
(length (all-threads))
(length
- (scandir "/proc/self/fd"
- (lambda (file)
- (not (member file '("." ".."))))))))
+ ;; In theory 'scandir' cannot return #f, but in practice,
+ ;; we've seen it before.
+ (or (scandir "/proc/self/fd"
+ (lambda (file)
+ (not (member file '("." "..")))))
+ '()))))