[Pidgin] #1937: Double-joining a chat causes the original client to hang/segfault

Pidgin trac at pidgin.im
Wed Jun 27 01:07:21 EDT 2007


#1937: Double-joining a chat causes the original client to hang/segfault
------------------------------------------------------+---------------------
 Reporter:  serynth                                   |       Type:  defect
   Status:  new                                       |   Priority:  minor 
Component:  pidgin (gtk)                              |    Version:  2.0.2 
 Keywords:  AIM chat join twice segfault hang freeze  |    Pending:  0     
------------------------------------------------------+---------------------
 Okay, this will take some explaining. Note that the original copy of
 pidgin (pidgin1) was 2.0.1, as I had updated without restarting pidgin.

 While fooling with accounts, I opened a second copy of pidgin (now 2.0.2)
 with the config directory set to a duplicate of ~/.purple, ~/.purple2,
 that only lacked the logs directory. It automatically logged in (as I
 forgot to add the switch to start up as offline), and automatically joined
 the chat room I had asked it to auto-join. Which is, of course, the
 expected behavior. I set pidgin2 back to offline manually and closed the
 pidgin2 chat window.

 When I returned to the pidgin1 chat window, I noticed that it said I had
 left the room and only the two other participants were there. Out of
 curiosity I began typing, and pidgin1 froze when I tried to send the
 message. Eventually I gave up and switched to the terminal window
 supporting pidgin2, then kill -9'd pidgin1.

 I started it up again: pidgin3. pidgin3 auto-joined the chat room and
 everything ran fine. Out of curiosity, I started yet another copy:
 pidgin4. When I switched to pidgin3's chat window, which now reported that
 I had left, to send a test message, it failed to send the message (didn't
 appear in either chat window) and, when I attempted to type again, pidgin3
 died.

 Starting it up in gdb, I tried at least four times to get new instances to
 segfault the gdb one like they did pidgin3, the core file having
 mysteriously vanished. They couldn't even get pidgingdb to freeze. I would
 join the chat on pidgingdb, then start a new instance to join as well. The
 first three or so times, the pidgingdb window did not say that I had left
 the chat room, and sending any number of messages didn't hang the client.
 The messages, however, would not show up in the chat buffer on either
 window. Then I would close the pidgingdb chat window, kill the new
 instance, and start over.

 Finally I was successful when pidgingdb displayed my exit message in the
 chat room, and (coincidentally) the message I sent (from pidgingdb) was
 banging on the keyboard. I... can't say I can explain that one.

 Here's the backtrace. Each function call in the backtrace also includes a
 "No symbol table info available." after it. I stripped these out, as this
 description is long enough as it is.

 `#0  0x47830d1a in memcpy () from /lib/libc.so.6`[[BR]]`#1  0x436ff2e7 in
 purple_circ_buffer_append () from /usr/lib/libpurple.so.0`[[BR]]`#2
 0x00235e6e in flap_connection_send () from
 /usr/lib/purple-2/liboscar.so.0`[[BR]]`#3  0x0022447d in aim_chat_send_im
 () from /usr/lib/purple-2/liboscar.so.0`[[BR]]`#4  0x0023e1f0 in
 oscar_send_chat () from /usr/lib/purple-2/liboscar.so.0`[[BR]]`#5
 0x4372e9eb in serv_chat_send () from /usr/lib/libpurple.so.0`[[BR]]`#6
 0x43706304 in g_source_remove () from /usr/lib/libpurple.so.0`[[BR]]`#7
 0x0808e23d in ?? ()`[[BR]]`#8  0x47b190f9 in g_cclosure_marshal_VOID__VOID
 ()`[[BR]]`   from /lib/libgobject-2.0.so.0`[[BR]]`#9  0x47b0bd9b in
 g_closure_invoke () from /lib/libgobject-2.0.so.0`

 And so I bring an end to this unusually verbose description. Hopefully
 this is of assistance to you.

-- 
Ticket URL: <http://developer.pidgin.im/ticket/1937>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list