[Pidgin] #4815: Crash on repeated disconnection with different errors
Pidgin
trac at pidgin.im
Sat Feb 9 11:31:06 EST 2008
#4815: Crash on repeated disconnection with different errors
--------------------------+-------------------------------------------------
Reporter: nosnilmot | Owner: resiak
Type: defect | Status: new
Priority: minor | Milestone:
Component: unclassified | Version:
Keywords: | Pending: 0
--------------------------+-------------------------------------------------
If an account is discconnected twice, but with different error messages,
pidgin crashes. For example, when restarting my XMPP server I get 1st
disconnect with "Server Shutdown", 2nd one "Connection refused".
I suspect a race of some sort where account-error-changed signal handlers
reset the account's current_error (because the old mini dialog is
destroyed?), and then the thing that fired the signal goes boom. my
attempts to fix only resulted in total loss of the updated mini dialog
though.
Backtrace:
{{{
(gdb) bt full
#0 0x00110402 in __kernel_vsyscall ()
No symbol table info available.
#1 0x00515fa0 in raise () from /lib/libc.so.6
No symbol table info available.
#2 0x005178b1 in abort () from /lib/libc.so.6
No symbol table info available.
#3 0x080c2012 in sighandler (sig=11) at gtkmain.c:220
No locals.
#4 <signal handler called>
No symbol table info available.
#5 0x007e46c0 in g_markup_escape_text () from /lib/libglib-2.0.so.0
No symbol table info available.
#6 0x080f8b20 in mini_dialog_set_description (self=0x10fbb730,
description=0x10fced18 "\b\206\a\021\230�") at minidialog.c:265
desc_esc = 0x93266c "D%\223"
desc_markup = 0xa611200 "�\\026\nx?\030\n�
priv = (PidginMiniDialogPrivate *) 0x10dd0770
#7 0x080f8ca6 in pidgin_mini_dialog_set_property (object=0x10fbb730,
property_id=2, value=0xbfe854e8, pspec=0xa611200) at minidialog.c:302
self = (PidginMiniDialog *) 0x10fbb730
priv = (PidginMiniDialogPrivate *) 0x10dd0770
#8 0x00901e2a in g_object_newv () from /lib/libgobject-2.0.so.0
No symbol table info available.
#9 0x009027d8 in g_object_new_valist () from /lib/libgobject-2.0.so.0
No symbol table info available.
#10 0x009028e0 in g_object_new () from /lib/libgobject-2.0.so.0
No symbol table info available.
#11 0x080f8601 in pidgin_mini_dialog_new (title=0x10e844d0
"stu at domain.com/Home disconnected", description=0x10ddb988
"\b\206\a\021\230�", icon_name=0x80fd836 "pidgin-dialog-error") at
minidialog.c:106
mini_dialog = (PidginMiniDialog *) 0x80a7aaf
#12 0x080f6384 in pidgin_make_mini_dialog (gc=0x0, icon_name=0x80fd836
"pidgin-dialog-error", primary=0x10e844d0 "stu at domain.com/Home
disconnected", secondary=0x10ddb988 "\b\206\a\021\230�",
user_data=0xa1c5e80) at gtkutils.c:3019
mini_dialog = (PidginMiniDialog *) 0x5
button_text = 0x1e83c0 "�\r"
cb_datas = (GList *) 0x0
args = 0x0
first_call = 0
#13 0x0807b750 in add_generic_error_dialog (account=0xa1c5e80,
err=0x11009868) at gtkblist.c:4507
mini_dialog = (GtkWidget *) 0xa233288
username = 0xa1c5d18 "stu at domain.com/Home"
enabled = 1
primary = 0x10e844d0 "stu at domain.com/Home disconnected"
#14 0x0807bfb5 in update_account_error_state (account=0xa1c5e80,
old=0x11088958, new=0x11009868, gtkblist=0xa2a9c00) at gtkblist.c:4762
No locals.
#15 0x00183150 in purple_marshal_VOID__POINTER_POINTER_POINTER
(cb=0x807bed9 <update_account_error_state>, args=0xbfe85794 " \a�020E",
data=0xa2a9c00, return_val=0x0) at signals.c:703
arg1 = (void *) 0xa1c5e80
arg2 = (void *) 0x11088958
arg3 = (void *) 0x11009868
#16 0x00182ac1 in purple_signal_emit_vargs (instance=0x1ebd9c,
signal=0x1cd8ce "account-error-changed", args=0xbfe85788
"\200^\034\nX\211\b\021h\230") at signals.c:482
instance_data = (PurpleInstanceData *) 0xa0fbf00
signal_data = (PurpleSignalData *) 0xa0ff940
handler_data = (PurpleSignalHandlerData *) 0xa6e3680
l = (GList *) 0xa3ab090
l_next = (GList *) 0x0
tmp = 0xbfe85788 "\200^\034\nX\211\b\021h\230"
__PRETTY_FUNCTION__ = "purple_signal_emit_vargs"
#17 0x00182953 in purple_signal_emit (instance=0x1ebd9c, signal=0x1cd8ce
"account-error-changed") at signals.c:434
args = 0xbfe85788 "\200^\034\nX\211\b\021h\230"
__PRETTY_FUNCTION__ = "purple_signal_emit"
#18 0x00139239 in set_current_error (account=0xa1c5e80,
new_err=0x11009868) at account.c:2337
priv = (PurpleAccountPrivate *) 0xa1c5cb8
old_err = (PurpleConnectionErrorInfo *) 0x11088958
#19 0x001392bf in connection_error_cb (gc=0x10f075b0,
type=PURPLE_CONNECTION_ERROR_NETWORK_ERROR, description=0x10dd0720 "Could
not establish a connection with the server:\nConnection refused",
unused=0x0) at account.c:2360
account = (PurpleAccount *) 0xa1c5e80
err = (PurpleConnectionErrorInfo *) 0x11009868
#20 0x00182ff0 in purple_marshal_VOID__POINTER_INT_POINTER (cb=0x139263
<connection_error_cb>, args=0xbfe85894 "�X�020\002Q", data=0x0,
return_val=0x0) at signals.c:659
arg1 = (void *) 0x10f075b0
arg2 = 0
arg3 = (void *) 0x10dd0720
#21 0x00182ac1 in purple_signal_emit_vargs (instance=0x1ebe54,
signal=0x1d23d2 "connection-error", args=0xbfe85888 "�u�020") at
signals.c:482
instance_data = (PurpleInstanceData *) 0xa0fbe50
signal_data = (PurpleSignalData *) 0xa0f8700
handler_data = (PurpleSignalHandlerData *) 0xa0ff9b8
l = (GList *) 0xa12eb70
l_next = (GList *) 0x0
tmp = 0xbfe85888 "�u�020"
__PRETTY_FUNCTION__ = "purple_signal_emit_vargs"
#22 0x00182953 in purple_signal_emit (instance=0x1ebe54, signal=0x1d23d2
"connection-error") at signals.c:434
args = 0xbfe85888 "�u�020"
__PRETTY_FUNCTION__ = "purple_signal_emit"
#23 0x00151a5a in purple_connection_error_reason (gc=0x10f075b0,
reason=PURPLE_CONNECTION_ERROR_NETWORK_ERROR, description=0x10dd0720
"Could not establish a connection with the server:\nConnection refused")
at connection.c:530
ops = (PurpleConnectionUiOps *) 0x8112020
__PRETTY_FUNCTION__ = "purple_connection_error_reason"
#24 0x06f0b280 in jabber_login_callback (data=0x10f075b0, source=-1,
error=0x6116ee "Connection refused") at jabber.c:522
tmp = (gchar *) 0x10dd0720 "Could not establish a connection with
the server:\nConnection refused"
gc = (PurpleConnection *) 0x10f075b0
js = (JabberStream *) 0x10e1bae8
#25 0x00174866 in purple_proxy_connect_data_disconnect
(connect_data=0x11087848, error_message=0x6116ee "Connection refused") at
proxy.c:352
No locals.
#26 0x00174a39 in socket_ready_cb (data=0x11087848, source=29, cond=3) at
proxy.c:434
connect_data = (PurpleProxyConnectData *) 0x11087848
error = 111
ret = 0
#27 0x080a7b07 in pidgin_io_invoke (source=0x10e74a28, condition=24,
data=0x11009878) at gtkeventloop.c:78
closure = (PidginIOClosure *) 0x11009878
purple_cond = 3
#28 0x00809ecd in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#29 0x007e07f2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
No symbol table info available.
#30 0x007e37cf in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#31 0x007e3b79 in g_main_loop_run () from /lib/libglib-2.0.so.0
No symbol table info available.
#32 0x06019f44 in IA__gtk_main () at gtkmain.c:1154
}}}
new_err is totally busted in #18:
{{{
p *new_err --> $4 = {type = 176019472, description = 0x10d00000 "\001"}
}}}
--
Ticket URL: <http://developer.pidgin.im/ticket/4815>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list