Bug 27154

Summary: terminating action chain in pendingproc_connect_signals() leads to crash
Product: Telepathy Reporter: Danielle Madeley <danielle>
Component: loggerAssignee: Telepathy bugs list <telepathy-bugs>
Status: RESOLVED FIXED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium CC: cosimo.alfarano
Version: git master   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Danielle Madeley 2010-03-17 20:40:23 UTC
In channel-text.c:pendingproc_connect_signals(), if the action chain is terminated due to an error, then the logger will crash when receiving a message from that signal.

This seems to be because other items, such as the TpContacts for the endpoints of the channel are never prepared, but the channel is still exists to receive messages.

If an actionchain is terminated, then there should be some callback that allows the logger to cleanup and drop the channel as unloggable.

~

This bug is specifically being triggered by channels coming from Salut, which doesn't support the Messages interface, and thus PendingMessagesRemoved cannot be connected. So separately, we still require a workable failsafe for when Messages is not available.
Comment 1 Danielle Madeley 2010-03-17 23:29:36 UTC
Ok. This patch cleans a few things up, it makes channel registering a bit less messy, and fixes a leak in TplActionChain that means it's now possible to finalize a channel. When the dead channel is finalized it stops receiving signals and later crashing the logger.

http://git.collabora.co.uk/?p=user/danni/telepathy-logger.git;a=commitdiff;h=9cd9a58d7331a96e20f262402628b81dfc675c68

Freeing the action chain is now moved from tpl_actionchain_continue/terminate to tpl_actionchain_finish, otherwise you can't get the result.

The bug was that tpl_actionchain_free() didn't free the GSimpleAsyncResult, so it leaked, along with its ref to the source object. That has now been fixed, so we can't free it before we get the result.

Also includes the contents of tpl-conf-iface commit 7971e1a0d6101cd125381ca1860f7c79ef8f74d0 which I independently came across and then realised was the same thing.

~

Need to still fix the bug where channels not implementing Messages never get logged.
Comment 2 Danielle Madeley 2010-03-18 22:11:12 UTC
Found another leak. TplLogEntryText objects were being leaked, which summarily leaked TplChannelText's that had received a message.

Fixed this and merged it to master along with the rest of log-store-sqlite-avoid-dups.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.