Re: GLib may busy loop on invalid file descriptors
- From: Frediano Ziglio <fziglio redhat com>
- To: Benjamin Berg <benjamin sipsolutions net>
- Cc: gtk-devel-list gnome org
- Subject: Re: GLib may busy loop on invalid file descriptors
- Date: Fri, 22 Dec 2017 06:14:01 -0500 (EST)
Hi,
I ran into an issue the other day where abrtd was polling an invalid
file descriptor. Obviously, there must be a bug in abrtd which closed
the wrong FD even though it was still registered with the mainloop
using g_io_channel_unix_new and g_io_add_watch. However, the failure
mode of GLib to simply busy loop seems quite bad.
Should g_io_unix_check maybe react to (G_IO_HUP | G_IO_ERR | G_IO_NVAL)
in a way that results in an error and the removal of the source? That
is, effectively run a fallback handler application is watching these
error conditions.
A viable solution might be:
* Return TRUE from g_io_unix_check by always checking for the errors
* Test again in g_io_unix_dispatch but log an error and return FALSE
if none of the requested conditions match.
Thoughts?
Benjamin
PS: https://github.com/abrt/abrt/issues/1280 has some info on the
specific issue.
The problem is similar to a double free. In that case I would personally
abort the program. If GLib really care about security trying to recovery
is a bad idea.
Frediano
[
Date Prev][
Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]