On Thu, Jun 25, 2015 at 4:39 PM, Stefan Schmidt <ste...@osg.samsung.com> wrote:
> Hello. > > On 25/06/15 08:15, Jean-Philippe ANDRÉ wrote: > > jpeg pushed a commit to branch master. > > > > > http://git.enlightenment.org/core/efl.git/commit/?id=6db0ff42291ff4c44815df3a5f77c31ae1bad1ac > > > > commit 6db0ff42291ff4c44815df3a5f77c31ae1bad1ac > > Author: Jean-Philippe Andre <jp.an...@samsung.com> > > Date: Wed Jun 24 14:43:07 2015 +0900 > > > > Ecore_Audio: Avoid abort() in PulseAudio > > > > In some cases (stress test), pulseaudio fails to play a sound > > and pa_stream_drain() returns NULL, making pa_operation_unref() > > crash right after. > > If this is what I think it is then it will be the hero commit of the > month if not quarter :) > > Let's see if we see any more ecore_audio test segfaults after this one. > Good job! > Not sure this is related to your problem. Here is what happened: cat a binary file in terminology, the BEL char happens a lot of times, so terminology will try to play sounds all the time, but PulseAudio fails to open more streams. The crash happened during eo_del() and was an abort(), not SIGSEGV. The root cause of this abort() is still unfixed: too many plays at once. Terminology or ecore_audio should just stop trying to play that many samples, or reuse existing streams maybe (this is just me thinking out loud). Best regards, > regards > Stefan Schmidt > > > --- > > src/lib/ecore_audio/ecore_audio_obj_out_pulse.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c > b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c > > index 901d9f6..eab7464 100644 > > --- a/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c > > +++ b/src/lib/ecore_audio/ecore_audio_obj_out_pulse.c > > @@ -184,6 +184,7 @@ > _ecore_audio_out_pulse_ecore_audio_out_input_detach(Eo *eo_obj, > Ecore_Audio_Out_ > > { > > pa_stream *stream = NULL; > > Eina_Bool ret2 = EINA_FALSE; > > + pa_operation *op; > > > > eo_do_super(eo_obj, MY_CLASS, ret2 = > ecore_audio_obj_out_input_detach(in)); > > if (!ret2) > > @@ -192,8 +193,14 @@ > _ecore_audio_out_pulse_ecore_audio_out_input_detach(Eo *eo_obj, > Ecore_Audio_Out_ > > eo_do(in, stream = eo_key_data_get("pulse_data")); > > > > pa_stream_set_write_callback(stream, NULL, NULL); > > - pa_operation_unref(pa_stream_drain(stream, _drain_cb, NULL)); > > + op = pa_stream_drain(stream, _drain_cb, NULL); > > + if (!op) > > + { > > + ERR("Failed to drain PulseAudio stream."); > > + return EINA_FALSE; > > + } > > > > + pa_operation_unref(op); > > return EINA_TRUE; > > } > > > > > > > > ------------------------------------------------------------------------------ > Monitor 25 network devices or servers for free with OpManager! > OpManager is web-based network management software that monitors > network devices and physical & virtual servers, alerts via email & sms > for fault. Monitor 25 devices for free with no restriction. Download now > http://ad.doubleclick.net/ddm/clk/292181274;119417398;o > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- Jean-Philippe André ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel