[glib/wip/chergert/fix-2708] gmain: close pidfd when finalizing GChildWatchSource
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/chergert/fix-2708] gmain: close pidfd when finalizing GChildWatchSource
- Date: Tue, 2 Aug 2022 19:37:00 +0000 (UTC)
commit b62745fe8e1699473f87caff328ac2c6ce394c55
Author: Christian Hergert <chergert redhat com>
Date: Tue Aug 2 12:35:40 2022 -0700
gmain: close pidfd when finalizing GChildWatchSource
A file-descriptor was created with the introduction of pidfd_getfd() but
nothing is closing it when the source finalizes. The GChildWatchSource is
the creator and consumer of this FD and therefore responsible for closing
it on finalization.
The pidfd leak was introduced in !2408.
This fixes issues with Builder where anon_inode:[pidfd] exhaust the
available FD limit for the process.
Fixes #2708
glib/gmain.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
---
diff --git a/glib/gmain.c b/glib/gmain.c
index a6f9b168e0..dba5f40e4e 100644
--- a/glib/gmain.c
+++ b/glib/gmain.c
@@ -5804,7 +5804,11 @@ g_child_watch_finalize (GSource *source)
GChildWatchSource *child_watch_source = (GChildWatchSource *) source;
if (child_watch_source->using_pidfd)
- return;
+ {
+ if (child_watch_source->poll.fd >= 0)
+ close (child_watch_source->poll.fd);
+ return;
+ }
G_LOCK (unix_signal_lock);
unix_child_watches = g_slist_remove (unix_child_watches, source);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]