Skip to content

Commit

Permalink
fdset: improve debug logging for left-over fds
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
poettering committed Oct 11, 2023
1 parent bde7e12 commit 91a6447
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/shared/fdset.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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);
}
}

Expand Down

0 comments on commit 91a6447

Please sign in to comment.