From 5c67ab2a7a8a2415ed13cce50f44ce9b3d95a7f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Tue, 10 Mar 2026 12:24:31 +0100 Subject: [PATCH] pipewire: mem: log if `close()` fails If a file descriptor is expected to be closed by the associated `pw_memblock`, and closing fails, then that usually signals a more serious issue in the memory accounting. So add a log message when that happens. --- src/pipewire/mem.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pipewire/mem.c b/src/pipewire/mem.c index 642a6b78e..e398a8f09 100644 --- a/src/pipewire/mem.c +++ b/src/pipewire/mem.c @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -856,8 +857,10 @@ void pw_memblock_free(struct pw_memblock *block) } if (block->fd != -1 && !(block->flags & PW_MEMBLOCK_FLAG_DONT_CLOSE)) { - pw_log_debug("%p: close fd:%d", pool, block->fd); - close(block->fd); + int fd = spa_steal_fd(block->fd); + pw_log_debug("%p: block:%p close fd:%d", pool, block, fd); + if (close(fd) < 0) + pw_log_error("%p: block:%p close fd:%d failed: %m", pool, block, fd); } spa_hook_list_clean(&b->listener_list);