Menu

#152 crash in dc plugin on chat message

Crash
open
general (62)
5
2007-08-21
2007-08-21
Nebokazer
No

last few lines of output

SOCK | moving [DcPeer:gennysusysara] to [DcUpload:gennysusysara]
SOCK | ending [DcPeer:gennysusysara] : (dc_peer->dc_upload) status:101
SOCK | ending [NapNetwork:Lyon] : (reconnecting too fast) status:101
DC_PROTO | R: $To: zerozapper From: [c2][a0]T[c3][ae][e2][80][a0][c3][a5][c3][b1]In[e2][80][a0][c3][aa]rn[c3][a2][e2][80][a0][c3][ae]on[c3][a2]lSh[c3][a2]r[c3][aa]Worl[c3][90] $<[c2][a0]T[c3][ae][e2][80][a0][c3][a5][c3][b1]In<1948 remaining>
Gtk | file gtktextiter.c: line 222 (gtk_text_iter_make_real): assertion failed: (iter->segment->char_count > 0)

Program received signal SIGABRT, Aborted.

here is the gdb session

(gdb) bt
#0 0x00002b7009ac4059 in raise () from /lib64/tls/libc.so.6
#1 0x00002b7009ac574e in abort () from /lib64/tls/libc.so.6
#2 0x00002b7008ef0ad6 in g_logv () from /usr/lib64/libglib-2.0.so.0
#3 0x00002b7008ef0b63 in g_log () from /usr/lib64/libglib-2.0.so.0
#4 0x00002b7008ef0f26 in g_assert_warning () from /usr/lib64/libglib-2.0.so.0
#5 0x00002b700a33d237 in gtk_text_layout_draw ()
from /usr/lib64/libgtk-x11-2.0.so.0
#6 0x00002b700a33fb79 in gtk_text_iter_forward_chars ()
from /usr/lib64/libgtk-x11-2.0.so.0
#7 0x00002b700a32ec66 in gtk_text_mark_set_visible ()
from /usr/lib64/libgtk-x11-2.0.so.0
#8 0x00002b700a330213 in gtk_text_buffer_get_tag_table ()
from /usr/lib64/libgtk-x11-2.0.so.0
#9 0x00002b7008a69d49 in g_closure_invoke ()
from /usr/lib64/libgobject-2.0.so.0
#10 0x00002b7008a7dfdc in signal_emit_unlocked_R ()
from /usr/lib64/libgobject-2.0.so.0
#11 0x00002b7008a7ebb3 in g_signal_emit_valist ()
from /usr/lib64/libgobject-2.0.so.0
#12 0x00002b7008a7ef23 in g_signal_emit () from /usr/lib64/libgobject-2.0.so.0
#13 0x00002b700a3344ec in gtk_text_buffer_insert_with_tags_by_name ()
from /usr/lib64/libgtk-x11-2.0.so.0
#14 0x00002b700a0100fb in ui_chat_print (page=0x4349, index=4432543,
---Type <return> to continue, or q <return> to quit---
ap=0x7fffa31c3060) at ui_chat.c:1259
#15 0x000000000041ef4d in chat_print (page=0x4349) at chat.c:218
#16 0x000000000041f358 in user_message (page=0x48997f0, sender=0x0, type=0x0,
user=0x48a7291 " Tîâ\200 åñInâ\200 êrnââ\200 îonâlShârêWorlÃ\220", message=0x43281a7 "") at chat.c:331
#17 0x00002b700c496beb in dc_handle_message (hub=0xce1340, command=0x48a7291)
at dc_proto.c:526
#18 0x00002b700c49f8cb in dc_hub_consume_input (hub=0xce1340)
at dc_network.c:673
#19 0x000000000041d8ac in b_socket_consume (s=0xce1340) at b_socket.c:110
#20 0x0000000000428480 in poll_invoke (p=0x1306ad0) at l_socket_unix.h:155
#21 0x0000000000427cd1 in poll_dispatch (source=0x4349, callback=0x4349,
data=0x6) at l_socket_unix.h:56
#22 0x00002b7008ee9027 in g_main_context_dispatch ()
from /usr/lib64/libglib-2.0.so.0
#23 0x00002b7008eeaa58 in g_main_context_iterate ()
from /usr/lib64/libglib-2.0.so.0
#24 0x00002b7008eeadba in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
#25 0x00002b700a2a0b21 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
#26 0x0000000000413bd0 in module_run (module=0x58f090) at module.c:197
#27 0x0000000000413d08 in modules_run () at module.c:234
#28 0x000000000040dd0a in main (argc=1, argv=0x7fffa31c34a8) at main.c:127
(gdb)

(gdb) up 14
#14 0x00002b700a0100fb in ui_chat_print (page=0x4349, index=4432543,
ap=0x7fffa31c3060) at ui_chat.c:1259
1259 gtk_text_buffer_insert_with_tags_by_name

(gdb) list
1255 if (text && *text)
1256 {
1257 unsigned len = strlen(text);
1258 while (len && text[len-1] == '\n') len--;
1259 gtk_text_buffer_insert_with_tags_by_name
1260 (buffer, &iter, text, len, tag, NULL);
1261 }
1262 }
1263
1264 if (padding & PAD_RIGHT)
(gdb) p len
$1 = 6
(gdb) p text
$2 = 0x43281a7 ""
(gdb) p *text
$3 = 0 '\0'

(gdb) up
#15 0x000000000041ef4d in chat_print (page=0x4349) at chat.c:218
218 UI_chat_print(page, ChatModule->buffer, ap);
(gdb) list
213 void chat_print(chat_page_t* page, ...) {
214 va_list ap;
215
216 va_start(ap, page);
217 page = chat_page_get_printable(page);
218 UI_chat_print(page, ChatModule->buffer, ap);
219 va_end(ap);
220 }
221
222 /** Set a page active or inactive. Inactive means that the page gets
(gdb) p page
$8 = (chat_page_t *) 0x4349
(gdb) p ChatModule->buffer
$9 = 0
(gdb) p ap
$10 = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffa31c3140,
reg_save_area = 0x7fffa31c3080}}
(gdb) (gdb) up
#16 0x000000000041f358 in user_message (page=0x48997f0, sender=0x0, type=0x0,
user=0x48a7291 " Tîâ\200 åñInâ\200 êrnââ\200 îonâlShârêWorlÃ\220", message=0x43281a7 "") at chat.c:331
331 chat_print(page,
(gdb) list
326 do {
327 pos1 = strchr(message, '\n');
328 if (pos1) *pos1 = 0;
329 chat_print(page, "+\2stamp", NULL);
330 source_message(page, sender, type);
331 chat_print(page,
332 "+\2nick", user, "<>",
333 "+\4c_text", message,
334 "+\0nl", NULL);
335 if (!pos1) break;
(gdb) p message
$11 = 0x43281a7 ""
(gdb) p user
$12 = 0x48a7291 " Tîâ\200 åñInâ\200 êrnââ\200 îonâlShârêWorlÃ\220"
(gdb) p page
$13 = (chat_page_t *) 0x48997f0
(gdb) p *page
$14 = {_object = {
name = 0x4899860 " Tîâ\200 åñInâ\200 êrnââ\200 îonâlShârêWorlÃ\220", destroy = 0x2b700c4979e0 <dc_cp_destroy>, priv = 0x48998a0},
label = 0x47bee00 " Tîâ\200 åñInâ\200 êrnââ\200 îonâlShârêWorlÃ\220",
title = 0x48998d0 "Private conversation with  Tîâ\200 åñInâ\200 êrnââ\200 îonâlShârêWorlÃ\220", ID = 2, close = 0x2b700c497780 <dc_cp_closing>,
expand = 0, active = 1}
(gdb) (gdb) up
#17 0x00002b700c496beb in dc_handle_message (hub=0xce1340, command=0x48a7291)
at dc_proto.c:526
526 dc_private_message(hub, from, auto_text(dc_hub_to_utf8(hub, message)));
(gdb) list
521 from = arg(NULL, 0); // the sender
522 nick = arg(NULL, 0); // the nickname
523 message = arg(NULL, 1);
524 CHECK(nick, "DC_PROTO", "invalid $To");
525
526 dc_private_message(hub, from, auto_text(dc_hub_to_utf8(hub, message)));
527 }
528
529 HANDLER(handle_search) {
530 char* address1;
(gdb) p message
No symbol "message" in current context.
(gdb) p hub
$15 = (dc_hub_t *) 0xce1340
(gdb) p from
No symbol "from" in current context.
(gdb) up
#18 0x00002b700c49f8cb in dc_hub_consume_input (hub=0xce1340)
at dc_network.c:673
673 const char* message = dc_handle_message(hub, result);
(gdb) list
668
669 if (!buffer) return NULL;
670
671 while ((result = dc_consume_message(buffer)) != NULL)
672 {
673 const char* message = dc_handle_message(hub, result);
674 dc_message_destroy(result);
675 if (message) return message;
676 }
677 buffer_consume(buffer, 0);
(gdb) p result
$16 = (dc_message_t *) 0x48a62f0
(gdb) p *result
$17 = {type = 0x14bded0 "$To:", message = 0x48a7280 "zerozapper",
alloc = 0x48a7280 "zerozapper", len = 2028}
(gdb)

Discussion


Log in to post a comment.