Closed wuputah closed 12 years ago
The Pidgin website has a good writeup on how to get a backtrace and specifically how to ignore SIGPIPE in GDB. It would also probably be useful to install the Pidgin debug or dev packages for Pidgin.
Also, make sure that campfire-libpurple was compiled with debugging symbols and isn't stripped (this should be the default situation in the latest commit).
I've been trying to reproduce a crash myself so I'm very curious to see your result!
@wuputah, All of the debugging I've done has been with output statements using 'pidgin -d'. I've also done a bit of work using 'valgrind' per the pidgin developers guidelines (to find and fix memory leaks). I am interested to know if the plugin crashes without other protocols running (XMPP, etc.). I agree that your trace doesn't really point to something campfire-plugin related.
I think I reproduced this.
#0 0x017e5225 in campfire_userlist_callback (xaction=0x880b028,
gsc=0x881dff8, cond=PURPLE_INPUT_READ) at message.c:134
#1 0x017e6437 in campfire_ssl_handler (campfire=0x86cbdc0, gsc=0x881dff8,
cond=PURPLE_INPUT_READ) at http.c:420
#2 0x0106d55d in recv_cb (data=0x881dff8, source=19, cond=PURPLE_INPUT_READ)
at sslconn.c:155
#3 0x080aa033 in pidgin_io_invoke (source=0x87db580, condition=G_IO_IN,
data=0x8720b60) at gtkeventloop.c:73
#4 0x00f6f72d in g_io_unix_dispatch (source=0x8826b30,
callback=0x80a9ff0 <pidgin_io_invoke>, user_data=0x8720b60)
at giounix.c:166
#5 0x00f2e99e in g_main_dispatch (context=0x813b200) at gmain.c:2539
#6 g_main_context_dispatch (context=0x813b200) at gmain.c:3075
#7 0x00f312ca in g_main_context_iterate (context=0x813b200, block=1,
dispatch=1, self=0x8691b60) at gmain.c:3146
#8 0x00f31499 in g_main_loop_run (loop=0x868eef8) at gmain.c:3340
#9 0x005bc654 in IA__gtk_main () at gtkmain.c:1256
#10 0x080c5279 in main (argc=Cannot access memory at address 0x2) at gtkmain.c:934
Have a look at the value of chatusers
:
(gdb) print chatusers
$1 = (GList *) 0x2
Whoops, that's not a pointer. Apparently calling purple_conv_chat_remove_user()
modifies the list we're currently iterating over. A proposed patch is here: 52110a1ca3
I just got a stacktrace matching yours. Applying your patch...
@wuputah, Is this working for you now? I've been running with this patch since Friday without a crash.
Yes, it's working great. Let's close this out.
Great news, thanks for testing it out!
This adapter works great for a bit but seems to crash pidgin within 30 minutes or so. Can you advise how to debug this further?
I ran pidgin using gdb and was able to get a trace:
Interesting that I don't see the campfire lib in the history - I should note that I'm also connected to XMPP. Could the two be conflicting in some way?
Let me know if I can help further.