From: Lennart Poettering Date: Wed, 11 Oct 2023 09:11:12 +0000 (+0200) Subject: fdset: improve debug logging for left-over fds X-Git-Tag: v255-rc1~274^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=91a6447607635802ac2278b7997cde687e2549a4;p=thirdparty%2Fsystemd.git fdset: improve debug logging for left-over fds Let's show which fds are closed as part of the left-over fd set logic on daemon reload/reexec cycles. This is useful to debug accidentally unclaimed fds. --- diff --git a/src/shared/fdset.c b/src/shared/fdset.c index f5dcdce2182..b62f15c6494 100644 --- a/src/shared/fdset.c +++ b/src/shared/fdset.c @@ -54,6 +54,8 @@ void fdset_close(FDSet *s) { void *p; while ((p = set_steal_first(MAKE_SET(s)))) { + int fd = PTR_TO_FD(p); + /* Valgrind's fd might have ended up in this set here, due to fdset_new_fill(). We'll ignore * all failures here, so that the EBADFD that valgrind will return us on close() doesn't * influence us */ @@ -62,8 +64,14 @@ void fdset_close(FDSet *s) { * which has no effect at all, since they are only duplicates. So don't be surprised about * these log messages. */ - log_debug("Closing set fd %i", PTR_TO_FD(p)); - (void) close_nointr(PTR_TO_FD(p)); + if (DEBUG_LOGGING) { + _cleanup_free_ char *path = NULL; + + (void) fd_get_path(fd, &path); + log_debug("Closing set fd %i (%s)", fd, strna(path)); + } + + (void) close_nointr(fd); } }