[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/3] main-loop: Don't leak GSources attached to
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 1/3] main-loop: Don't leak GSources attached to a GMainContext |
Date: |
Thu, 7 Feb 2019 15:24:40 +0100 |
On Thu, Feb 7, 2019 at 3:23 PM Marc-André Lureau
<address@hidden> wrote:
>
> On Thu, Feb 7, 2019 at 2:23 PM Alberto Garcia <address@hidden> wrote:
> >
> > After g_source_attach() the GMainContext holds a reference to the
> > GSource, so the caller does not need to keep it.
> >
> > pty_chr_state() and qio_task_thread_worker() are not doing this, so
> > the GSource is being leaked in both cases (pty_chr_open_src_cancel()
> > is the exception here because it does remove the extra reference
> > correctly).
> >
> > Signed-off-by: Alberto Garcia <address@hidden>
>
> You could mention this is a fix for regression from
> a17536c594bfed94d05667b419f747b692f5fc7f
>
and 938eb9e9c83d34d90cac6ec5c5388e7998840e4e
>
> Reviewed-by: Marc-André Lureau <address@hidden>
>
>
> > ---
> > chardev/char-pty.c | 2 +-
> > io/task.c | 1 +
> > 2 files changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/chardev/char-pty.c b/chardev/char-pty.c
> > index f681d637c1..f16a5e8d59 100644
> > --- a/chardev/char-pty.c
> > +++ b/chardev/char-pty.c
> > @@ -60,7 +60,6 @@ static void pty_chr_open_src_cancel(PtyChardev *s)
> > {
> > if (s->open_source) {
> > g_source_destroy(s->open_source);
> > - g_source_unref(s->open_source);
> > s->open_source = NULL;
> > }
> > }
> > @@ -216,6 +215,7 @@ static void pty_chr_state(Chardev *chr, int connected)
> > qemu_chr_be_generic_open_func,
> > chr, NULL);
> > g_source_attach(s->open_source, chr->gcontext);
> > + g_source_unref(s->open_source);
> > }
> > if (!chr->gsource) {
> > chr->gsource = io_add_watch_poll(chr, s->ioc,
> > diff --git a/io/task.c b/io/task.c
> > index 2886a2c1bc..c8489fb790 100644
> > --- a/io/task.c
> > +++ b/io/task.c
> > @@ -120,6 +120,7 @@ static gpointer qio_task_thread_worker(gpointer opaque)
> > idle = g_idle_source_new();
> > g_source_set_callback(idle, qio_task_thread_result, data, NULL);
> > g_source_attach(idle, data->context);
> > + g_source_unref(idle);
> >
> > return NULL;
> > }
> > --
> > 2.11.0
> >
[Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Alberto Garcia, 2019/02/07
- Re: [Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Daniel P . Berrangé, 2019/02/07
- Re: [Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Alberto Garcia, 2019/02/08
- Re: [Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Alberto Garcia, 2019/02/08
- Re: [Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Paolo Bonzini, 2019/02/08
- Re: [Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Alberto Garcia, 2019/02/08
- Re: [Qemu-devel] [PATCH 3/3] char-socket: Lock tcp_chr_disconnect() and socket_reconnect_timeout(), Paolo Bonzini, 2019/02/08