[pulseaudio-discuss] mainloop n defer events assertion

John Promersberger jpromersberger at hotmail.com
Sat Apr 23 18:30:01 UTC 2016


You are absolutely correct. I have been corking/flushing the stream outside of my mainloop thread that calls pa_mainloop_run().

Are the callbacks for actions like stream reads and writes executing in my thread that is running my mainloop or in a server thread?



> On Apr 23, 2016, at 4:26 AM, Tanu Kaskinen <tanuk at iki.fi> wrote:
> 
>> On Wed, 2016-04-20 at 21:30 +0000, John Promersberger wrote:
>> Noob.
>> 
>> 
>> I thought my code was doing really well, but it has started to
>> terminate on the mainloop assertion where the number of deferred
>> events is greater than 0 (mainloop.c: ~280 if I remember correctly).
>> Looks like it is in mainloop->defer_enable().   Seems to mostly occur
>> when I'm corking/fllushing/disconnecting/decrementing reference count
>> of a stream.  After I tear down the stream, I build a different
>> stream to play a different sound.  I've since taken out the corking
>> of the stream.
>> 
>> 
>> I couldn't find anything useful to read regarding this.  I'm not
>> creating an deferred events explicitly myself.
>> 
>> 
>> 
>> Any ideas that could resolve this?
> 
> Do you have multiple threads by any chance? I've seen that kind of an
> assertion with code that accessed the mainloop from multiple threads.
> libpulse is not thread-safe, so accessing libpulse objects from
> multiple threads is not supported (unless you yourself implement the
> necessary locking to make it safe).
> 
> -- 
> Tanu
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss


More information about the pulseaudio-discuss mailing list