[pulseaudio-discuss] [PATCH] mainloop: Map POLLNVAL to PA_IO_EVENT_ERROR.
Arun Raghavan
arun.raghavan at collabora.co.uk
Thu Dec 29 19:36:30 PST 2011
On Wed, 2011-12-28 at 14:29 +0200, Tanu Kaskinen wrote:
> I don't see any reason why POLLNVAL should be ignored like
> it is now without this patch. PA_IO_EVENT_ERROR seems to be
> the best choice for reporting the IO event type, because
> POLLNVAL is an error condition and adding a new IO event
> type just for POLLNVAL probably wouldn't add any value.
It gives more information about what went wrong, and I don't see the
gain of throwing away this information (after looking at the code,
adding a PA_IO_EVENT_INVALID to the places where PA_IO_EVENT_ERROR is
handled should be relatively easy).
> This patch seems to have made one hard to reproduce bug
> impossible to reproduce. The problem was that a certain
> client application (involving GStreamer) occasionally
> started to consume 100% of CPU. Based on some stack traces
> it was speculated that the threaded mainloop of libpulse
> was spinning on POLLNVAL, because some user of the mainloop
> (maybe GStreamer) kept the IO event active when the IO
> event was triggered with zero flags. But that's just
> speculation - there's no direct evidence of POLLNVAL being
> triggered at all, only that with this patch the application
> has been behaving nicely so far.
> ---
> src/pulse/mainloop.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/src/pulse/mainloop.c b/src/pulse/mainloop.c
> index 5c0345e..a27cc55 100644
> --- a/src/pulse/mainloop.c
> +++ b/src/pulse/mainloop.c
> @@ -144,6 +144,7 @@ static pa_io_event_flags_t map_flags_from_libc(short flags) {
> (flags & POLLIN ? PA_IO_EVENT_INPUT : 0) |
> (flags & POLLOUT ? PA_IO_EVENT_OUTPUT : 0) |
> (flags & POLLERR ? PA_IO_EVENT_ERROR : 0) |
> + (flags & POLLNVAL ? PA_IO_EVENT_ERROR : 0) |
> (flags & POLLHUP ? PA_IO_EVENT_HANGUP : 0);
> }
Regardless of the conclusion of the discussion above, the corresponding
changes should go into the glib-mainloop code as well.
-- Arun
More information about the pulseaudio-discuss
mailing list