[Bug 796162] SIGPIPE when playing notification sound
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Wed May 23 10:53:44 UTC 2018
https://bugzilla.gnome.org/show_bug.cgi?id=796162
Tanu Kaskinen <tanuk at iki.fi> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tanuk at iki.fi
--- Comment #3 from Tanu Kaskinen <tanuk at iki.fi> ---
(I'm from PulseAudio, not a GStreamer developer.)
Based on the backtrace, the crash seems to happen, because pa_mainloop tries to
write to an internal pipe that has been closed. The pipe is closed only in
pa_mainloop_free(), so it seems that the mainloop is being used after freeing
it.
pulsesink uses pa_threaded_mainloop, so pa_mainloop_free() is called from
pa_threaded_mainloop_free(). There are a couple of calls to that in
pulsesink.c. The crash happens in gst_pulseringbuffer_commit(). Is it possible
that gst_pulseringbuffer_commit() is called after a pa_threaded_mainloop_free()
call? One of those free() calls has a "mainloop = NULL" assignment right after
it, and that should make gst_pulseringbuffer_commit() crash earlier if the
free() call is the problem. The other free() call is done when starting the
mainloop fails, so it's unlikely that gst_pulseringbuffer_commit() could be
called in that situation.
Now I noticed that there's a thread created by pa_threaded_mainloop running.
Assuming that there aren't multiple pa_threaded_mainloops in use by the
application, pa_threaded_mainloop_free() has certainly not been called. That
raises the question: why does the internal wakeup pipe seem to be closed?
Nobody else has access to it than pa_mainloop, and it doesn't close the pipe
except when freeing the mainloop. Why would the pipe close by itself?
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list