[Pkg-nagios-devel] Bug#1070073: check_libs_ng sometimes returns "No such file or directory"
Evgeni Golov
evgeni at debian.org
Mon Apr 29 19:35:28 BST 2024
Package: monitoring-plugins-contrib
Version: 42.20230308+deb12u1+b1
Tags: patch
Ohai,
on systems with many short-lived processes (like a monitoring server,
spawning many check_* commands), I regularly see check_libs_ng return
UNKNOWN Exception: [Errno 2] No such file or directory: <some map file>
This is because the process might have already ended between calling
os.listdir() and os.stat().
Attached is a patch that catches the exception and pretends the process
does not need restarting.
(FileNotFoundError is Python 3.3+, if you for some arcane reason need
support for older Pythons, catch OSError instead.)
Thanks
Evgeni
-------------- next part --------------
diff --git a/check_libs_ng/check_libs_ng b/check_libs_ng/check_libs_ng
index f260491..44ad0f1 100644
--- a/check_libs_ng/check_libs_ng
+++ b/check_libs_ng/check_libs_ng
@@ -68,8 +68,11 @@ def main():
continue
else:
logger.debug('checking lib %s', real_map_file_path)
- if os.stat(map_file).st_nlink == 0:
- needs_reload.setdefault(proc_name, set()).add(proc_pid)
+ try:
+ if os.stat(map_file).st_nlink == 0:
+ needs_reload.setdefault(proc_name, set()).add(proc_pid)
+ except FileNotFoundError:
+ pass
else:
logger.debug('skipping kernel process %s', os.path.basename(proc))
More information about the Pkg-nagios-devel
mailing list