|
发表于 2006-4-13 16:37:43
|
显示全部楼层
gaim加openq-0.3.2插件后经常飞掉
group_find.c中
原来
142 if (q_bud != NULL)
143 member->nickname = g_strdup(q_bud->nickname);
修改
142 if (q_bud != NULL && q_bud->nickname != NULL)
Detaching after fork from child process 16512.
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 805462096 (LWP 4332)]
0x0722fabc in strlen () from /lib/libc.so.6
(gdb)
(gdb)
(gdb)
(gdb)
(gdb)
(gdb)
(gdb) which
Undefined command: "which". Try "help".
(gdb) where
#0 0x0722fabc in strlen () from /lib/libc.so.6
#1 0x073e13dc in g_strdup () from /usr/lib/libglib-2.0.so.0
#2 0x0667a41c in qq_group_find_or_add_member (gc=Variable "gc" is not available.
) at group_find.c:143
#3 0x0667cbc0 in qq_process_group_cmd_get_group_info (data=0x7f9bafd0 "\004", cursor=0x7f9bb434, len=1087, gc=0x8973b68) at group_info.c:210
#4 0x0667eb20 in qq_process_group_cmd_reply (buf=Variable "buf" is not available.
) at group_network.c:186
#5 0x06689998 in _qq_packet_process (buf=0x7f9bb4b0 "\002\001", buf_len=Variable "buf_len" is not available.
) at recv_core.c:259
#6 0x06689b68 in qq_input_pending (data=0x8973b68, source=Variable "source" is not available.
) at recv_core.c:314
#7 0x080ad014 in gaim_gtk_eventloop_get_ui_ops () from /usr/bin/gaim
#8 0x073f42d0 in g_io_channel_unix_get_fd () from /usr/lib/libglib-2.0.so.0
#9 0x073c1034 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#10 0x073c5088 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#11 0x073c54f4 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#12 0x079ba354 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#13 0x080dcc54 in main () from /usr/bin/gaim
今天跟踪了一下,信息如下,也没时间再跟踪,
(gdb) fram 2
#2 0x0667a41c in qq_group_find_or_add_member (gc=Variable "gc" is not available.
) at group_find.c:143
143 member->nickname = g_strdup(q_bud->nickname);
(gdb) p q_bud
No symbol "q_bud" in current context.
(gdb) l
138 member->uid = member_uid;
139 buddy = gaim_find_buddy(gaim_connection_get_account(gc), uid_to_gaim_name(member_uid));
140 if (buddy != NULL) {
141 q_bud = (qq_buddy *) buddy->proto_data;
142 if (q_bud != NULL)
143 member->nickname = g_strdup(q_bud->nickname);
144 else if (buddy->alias != NULL)
145 member->nickname = g_strdup(buddy->alias);
146 } // if buddy != NULL
147 group->members = g_list_append(group->members, member); |
|