Bug 14933 - Given incorrect credentials, Haze reliably crashes when connection fails
Summary: Given incorrect credentials, Haze reliably crashes when connection fails
Status: RESOLVED FIXED
Alias: None
Product: Telepathy
Classification: Unclassified
Component: haze (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Will Thompson
QA Contact: Telepathy bugs list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-03-10 05:27 UTC by Will Thompson
Modified: 2008-08-14 09:49 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Will Thompson 2008-03-10 05:27:24 UTC
Sometimes, after a connection error of some form occurs, libpurple segfaults in connection.c:purple_connection_disconnect_cb(), which is called via an idle callback.  In particular, purple_account_get_password(account) fails because account is invalid.

I believe this is because haze destroys the account on an idle callback set in response to ConnUiOps::disconnected, but does not remove the gc->disconnect_timeout callback.

Either haze should cancel that callback (which seems broken), or should destroy the account in response to a later signal.
Comment 1 Will Thompson 2008-08-13 03:59:16 UTC
As far as I can tell, libpurple removes the timeout at the right time; there's no code path that can let haze's idle callback fire before libpurple's one has either run or been cancelled. So I can't see why this would happen, and I can't reproduce it any more.
Comment 2 Will Thompson 2008-08-13 10:27:31 UTC
If you supply incorrect credentials haze crashes on connection, every time.

Shortly after 

(haze:20176): tp-glib-DEBUG: tp_base_connection_change_status: was 1, now 2, for reason 3
** (haze:20176): DEBUG: haze_im_channel_factory_iface_close_all: closing im channels
(haze:20176): tp-glib-DEBUG: tp_base_connection_change_status: emitting status-changed to 2, for reason 3
** Message: [info] account: Disconnecting account 0x9261ee0
** Message: [info] connection: Disconnecting connection 0x9265588
** Message: [info] connection: Destroying connection 0x9265588

you dereference freed memory of some form, usually because the prpl is inspecting its info stored on the connection after it's destroyed.


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.