GNOME Bugzilla – Bug 670585
Got this when hanging up a connected call
Last modified: 2012-11-08 23:09:14 UTC
GStreamer-WARNING **: Element 'fsrawconference0' is not in bin 'pipeline1' Program received signal SIGTRAP, Trace/breakpoint trap. 0x00007ffff420fe18 in g_logv (log_domain=0x380e6a3778 "GStreamer", log_level=G_LOG_LEVEL_WARNING, format=0x380e6a4db0 "Element '%s' is not in bin '%s'", args1=0x7fffffffba48) at gmessages.c:758 758 G_BREAKPOINT (); (gdb) bt
+ Trace 229708
*** Bug 670532 has been marked as a duplicate of this bug. ***
Here is what's happenning: - The call connects; fsrawconference0 and fsrtpconference0 are received through TfChannel::fs-conference-added and added the the pipeline A - Empathy hangs up the call. It calls Hangup() on the channel, destroys the pipeline A and create a new one B (to continue display preview and in preparation for a next call; empathy_call_window_reset_pipeline) - TfChannel::fs-conference-removed is fired on the channel and Empathy tries to remove fsrawconference0 on B which doesn't contain the element as that's the new pipeline.
After hangup the flow is the something along these lines, where indentation represents direct calls and numbers in square brackets connect signal emissions to their callbacks: empathy_call_window_hangup_cb empathy_call_handler_stop_call tp_call_channel_hangup_async --> [1] empathy_call_window_disconnected empathy_call_window_reset_pipeline [1] on_call_state_changed_cb (state=TP_CALL_STATE_ENDED) tf_channel_dispose --> [2] [2] empathy_call_window_conference_removed_cb Thus the hangup on the channel will ultimately cause the removal of the conference element in empathy_call_window_conference_removed_cb(), but before that happens empathy_call_window_reset_pipeline() has already free'd the pipeline and replaced it with a new one.
Yeah so we should either disconnect the signal when we don't care about it any more or make the callback safer.
Created attachment 209103 [details] [review] call-window: don't remove fs*conference if not in pipeline On hangup the pipeline will be reset but a later callback would try to remove the no longer existent farstrema "fsrawconference0" (or "fsrtpconference0") element from the pipeline. Keep track of the added element and remove it only if needed.
Review of attachment 209103 [details] [review]: I don't really like this patch tbh; it looks pretty hacky to me. I'll investigate a bit and see if we can come with a proper solution. ::: src/empathy-call-window.c @@ +2453,2 @@ priv->notifiers = g_list_prepend (priv->notifiers, notifier); + // Track the conference element, as the pipeline could Don't use C++ comments
I am pretty sure this is a duplicate of bug 686311 and has been fixed in master and gnome-3-6. Feel free to reopen if I am not. My apologies for noticing that you had already written a patch. Sorry about that. *** This bug has been marked as a duplicate of bug 686311 ***