Open silberzwiebel opened 10 years ago
Thanks for reporting, though I do not see anything purple-events related in your backtrace… Can you check with the Git version, especially the latest commit (9acc18d03c5d157d96a72228042cd446bc7a4ef5)?
I tried, but I failed in installing the plugin... Could you tell me, how to do it? This is what I did:
./autogen.sh
./configure
make
And now? How to install?
If nothing failed at this point, something like sudo make install
(or make install
as root) should work.
Alright, this worked. Plugin version now says 0.3. Problem stil exists, and still only whith plugin enabled. Here is the backtrace with the 0.3 version (btw any way to attach textfiles here?):
GNU gdb (Gentoo 7.7 vanilla) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from pidgin...Reading symbols from /usr/lib64/debug//usr/bin/pidgin.debug...done.
done.
[?1034h(gdb) handle SIGPIPE nostop noprint
Signal Stop Print Pass to program Description
SIGPIPE No No Yes Broken pipe
(gdb) run
Starting program: /usr/bin/pidgin
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
warning: File "/usr/lib64/gcc/x86_64-pc-linux-gnu/4.7.3/libstdc++.so.6.0.17-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
add-auto-load-safe-path /usr/lib64/gcc/x86_64-pc-linux-gnu/4.7.3/libstdc++.so.6.0.17-gdb.py
line to your configuration file "/home/thomas/.gdbinit".
To completely disable this security protection add
set auto-load safe-path /
line to your configuration file "/home/thomas/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
info "(gdb)Auto-loading safe path"
[New Thread 0x7fffcd289700 (LWP 12733)]
[New Thread 0x7fffc7fff700 (LWP 12734)]
[New Thread 0x7fffc77fe700 (LWP 12735)]
[New Thread 0x7fffc6ffd700 (LWP 12736)]
[Thread 0x7fffc77fe700 (LWP 12735) exited]
Program received signal SIGSEGV, Segmentation fault.
0x0000000000460bc5 in pidgin_conv_has_focus (conv=0x279f740) at gtkconv.c:6340
6340 gtkconv.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt full
#0 0x0000000000460bc5 in pidgin_conv_has_focus (conv=0x279f740) at gtkconv.c:6340
gtkconv = 0x279ca10
win = 0x0
has_focus = 32767
#1 0x00007fffd8f93a6e in purple_events_callback_conversation_updated (conv=0x279f740, type=<optimized out>, context=<optimized out>) at src/plugin/callbacks.c:196
No locals.
#2 0x00007ffff5d38d82 in purple_signal_emit_vargs (instance=<optimized out>, signal=0x7ffff5d8604a "conversation-updated", args=args@entry=0x7fffffffa958) at signals.c:482
instance_data = <optimized out>
signal_data = 0x87a9d0
handler_data = <optimized out>
l = <optimized out>
l_next = 0xb44480
tmp = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffaa30, reg_save_area = 0x7fffffffa970}}
__PRETTY_FUNCTION__ = "purple_signal_emit_vargs"
#3 0x00007ffff5d38ed1 in purple_signal_emit (instance=<optimized out>, signal=<optimized out>) at signals.c:434
args = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7fffffffaa30, reg_save_area = 0x7fffffffa970}}
__PRETTY_FUNCTION__ = "purple_signal_emit"
#4 0x0000000000466e54 in private_gtkconv_new (conv=conv@entry=0x279f740, hidden=hidden@entry=0) at gtkconv.c:5425
gtkconv = 0x279ca10
conv_type = PURPLE_CONV_TYPE_CHAT
pane = <optimized out>
tab_cont = <optimized out>
convnode = <optimized out>
value = 0xd820f0
#5 0x0000000000466f5b in pidgin_conv_new (conv=0x279f740) at gtkconv.c:5470
No locals.
#6 0x00007ffff5d0706d in purple_conversation_new (type=type@entry=PURPLE_CONV_TYPE_CHAT, account=0x8ace50, name=name@entry=0x279f670 "test@conference.xaddy.de") at conversation.c:450
conv = 0x279f740
gc = 0x25e6540
ops = <optimized out>
hc = 0x279f6c0
__PRETTY_FUNCTION__ = "purple_conversation_new"
#7 0x00007ffff5d37e08 in serv_got_joined_chat (gc=0x25e6540, id=2, name=0x279f670 "test@conference.xaddy.de") at server.c:853
conv = <optimized out>
chat = <optimized out>
account = <optimized out>
__PRETTY_FUNCTION__ = "serv_got_joined_chat"
#8 0x00007fffd91df464 in handle_presence_chat (packet=<optimized out>, presence=0x7fffffffac10, js=0x2616170) at presence.c:632
room_jid = <optimized out>
jid = 0x25b1d30 "kartoffelsalat@xaddy.de/0dd6779c-1264-4a4f-9f3c-7ea157708756"
role = 0x279f460 "moderator"
affiliation = 0x25b1ed0 "owner"
is_our_resource = 1
jbr = <optimized out>
flags = (PURPLE_CBFLAGS_OP | PURPLE_CBFLAGS_FOUNDER)
chat = 0x25b5610
i = 3
#9 jabber_presence_parse (js=js@entry=0x2616170, packet=<optimized out>) at presence.c:1033
type = <optimized out>
jbr = 0x0
signal_return = <optimized out>
presence = {type = JABBER_PRESENCE_AVAILABLE, jid_from = 0x279f630, from = 0x279d5d0 "test@conference.xaddy.de/kartoffelsalat", to = 0x2644fd0 "kartoffelsalat@xaddy.de/0dd6779c-1264-4a4f-9f3c-7ea157708756", id = 0x0,
jb = 0x279f520, chat = 0x25b5610, chat_info = {codes = 0x279b230, item = 0x25b1ca0}, caps = 0xb95760, state = JABBER_BUDDY_STATE_ONLINE, status = 0x0, priority = 1, vcard_avatar_hash = 0x0, nickname = 0x0, delayed = 0,
sent = 1393410629, idle = 0}
child = <optimized out>
__PRETTY_FUNCTION__ = "jabber_presence_parse"
#10 0x00007fffd91d004b in jabber_process_packet (js=js@entry=0x2616170, packet=packet@entry=0x7fffffffad28) at jabber.c:347
name = 0x279b300 "presence"
xmlns = 0x279eaa0 "jabber:client"
#11 0x00007fffd91dcd57 in jabber_parser_element_end_libxml (user_data=0x2616170, element_name=<optimized out>, prefix=<optimized out>, namespace=<optimized out>) at parser.c:169
packet = 0xb95600
js = 0x2616170
#12 0x00007ffff0031493 in ?? () from /usr/lib64/libxml2.so.2
No symbol table info available.
#13 0x00007ffff00384bc in ?? () from /usr/lib64/libxml2.so.2
No symbol table info available.
#14 0x00007ffff0039f3f in xmlParseChunk () from /usr/lib64/libxml2.so.2
No symbol table info available.
#15 0x00007fffd91dd1fd in jabber_parser_process (js=0x2616170, buf=<optimized out>, len=<optimized out>) at parser.c:279
ret = <optimized out>
#16 0x00007fffd91cbd0e in jabber_recv_cb_ssl (data=0x25e6540, gsc=0xb9ad10, cond=<optimized out>) at jabber.c:659
gc = 0x25e6540
js = 0x2616170
len = 489
buf = "<presence to='kartoffelsalat@xaddy.de/0dd6779c-1264-4a4f-9f3c-7ea157708756' from='test@conference.xaddy.de/kartoffelsalat'><priority>1</priority><c hash='sha-1' ext='voice-v1 camera-v1 video-v1' ver='"...
__PRETTY_FUNCTION__ = "jabber_recv_cb_ssl"
#17 0x000000000046e43d in pidgin_io_invoke (source=<optimized out>, condition=<optimized out>, data=0x86e110) at gtkeventloop.c:73
closure = 0x86e110
purple_cond = PURPLE_INPUT_READ
#18 0x00007ffff503eb55 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#19 0x00007ffff503ee98 in ?? () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#20 0x00007ffff503f2fa in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#21 0x00007ffff6d72db7 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
No symbol table info available.
#22 0x0000000000434fd1 in main (argc=1, argv=0x7fffffffd568) at gtkmain.c:933
opt_force_online = 0
opt_help = <optimized out>
opt_login = 0
opt_nologin = 0
opt_version = <optimized out>
opt_si = 0
opt_config_dir_arg = <optimized out>
opt_login_arg = <optimized out>
opt_session_arg = <optimized out>
search_path = <optimized out>
accounts = <optimized out>
sig_indx = 1
sigset = {__val = {82950, 0 <repeats 15 times>}}
errmsg = "\020\000\000\000\000\000\000\000\362\373z\364\377\177\000\000\000\000\000\000\000\000\000\000\240ZQ\356\377\177\000\000\200\304\377\377\377\177\000\000\237u\244\360\377\177\000\000/usr/bin/pidgin", '\000' <repeats 633 times>...
signal_channel = <optimized out>
signal_status = <optimized out>
signal_channel_watcher = 1
segfault_message_tmp = <optimized out>
error = 0x0
opt = <optimized out>
gui_check = <optimized out>
debug_enabled = <optimized out>
migration_failed = <optimized out>
active_accounts = <optimized out>
st = {st_dev = 4222451713, st_ino = 140737488340096, st_nlink = 140737488340096, st_mode = 4294952064, st_uid = 32767, st_gid = 4294952064, __pad0 = 32767, st_rdev = 140737488340111, st_size = 140737488344191,
st_blksize = 140737488340096, st_blocks = 140737488344191, st_atim = {tv_sec = 0, tv_nsec = 0}, st_mtim = {tv_sec = 0, tv_nsec = 0}, st_ctim = {tv_sec = 0, tv_nsec = 16}, __unused = {140737295088626, 140737298366464, 0}}
long_options = {{name = 0x4d2d7c "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x4bd02e "debug", has_arg = 0, flag = 0x0, val = 100}, {name = 0x4ce163 "force-online", has_arg = 0, flag = 0x0, val = 102}, {
name = 0x4c06df "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x4ce02a "login", has_arg = 2, flag = 0x0, val = 108}, {name = 0x4ce170 "multiple", has_arg = 0, flag = 0x0, val = 109}, {name = 0x4ce179 "nologin",
has_arg = 0, flag = 0x0, val = 110}, {name = 0x4d2d72 "session", has_arg = 1, flag = 0x0, val = 115}, {name = 0x4c43db "version", has_arg = 0, flag = 0x0, val = 118}, {name = 0x4d2d85 "display", has_arg = 1, flag = 0x0,
val = 68}, {name = 0x4cf666 "sync", has_arg = 0, flag = 0x0, val = 83}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
(gdb) quit
A debugging session is active.
Inferior 1 [process 12709] will be killed.
Quit anyway? (y or n)
In gdb, try print ((PidginConversation *)conv)->win
, if it is NULL
, please file at Pidgin, since they should check that in their code. If it is not, I have no idea what that might be. :-)
Sorry, it's not NULL:
(gdb) print ((PidginConversation *)conv)->win
$1 = (PidginWindow *) 0x27bdb20
I used the command after the crash, this was correct, no?
Sure… The line that fails (unless you are using patched source) is:
g_object_get(G_OBJECT(win->window), "has-toplevel-focus", &has_focus, NULL);
Maybe print *((PidginConversation *)conv)->win
, since ->window
could be NULL too…
Nope:
(gdb) print *((PidginConversation *)conv)->win
$1 = {window = 0x74736574, notebook = 0x264c1c0, gtkconvs = 0x0, menu = {menubar = 0x51, view_log = 0x0, send_file = 0x0, add_pounce = 0x0, get_info = 0x0, invite = 0x0, alias = 0x0, block = 0x0, unblock = 0x0, add = 0x0, remove = 0x51,
insert_link = 0x0, insert_image = 0x0, logging = 0x0, sounds = 0x0, show_formatting_toolbar = 0x0, show_timestamps = 0x0, show_icon = 0x0, send_to = 0x0, tray = 0x0, typing_icon = 0x21, item_factory = 0x6e6967646950}, dialogs = {
search = 0x7efe48}, in_drag = 8322776, in_predrag = 0, drag_tab = 33, drag_min_x = 0, drag_max_x = 40766816, drag_min_y = 0, drag_max_y = 17190224, drag_motion_signal = 0, drag_leave_signal = 39952832, audio_call = 0x21,
video_call = 0x264c200, audio_video_call = 0x7400000073}
I give up! In your stack, there is win = 0x0
so it may be some kind of race…
I do not have any more idea. You should file a bug at Pidgin’s. I will leave this one opened for now.
Is is still crashing?
Sorry for my late reply. Indeed, yes, pidgin still crashes. I'm not using Pidgin since some time anymore, but followed the steps I wrote at the beginning of this issue and Pidgin crashed. I'm now at Fedora 23, with Pidgin 2.10.11 and your plugin version 0.99.1. Pidgin does not crash with purple-events disabled.
This is the backtrace I get:
#0 0x00005555555bb795 in pidgin_conv_has_focus ()
#1 0x00007fffd7e001d6 in purple_events_callback_conversation_updated (conv=0x55555692ee70, type=<optimized out>, context=<optimized out>) at src/plugin/callbacks.c:196
#2 0x00007ffff4e0df40 in purple_signal_emit_vargs () at /lib64/libpurple.so.0
#3 0x00007ffff4e0e09e in purple_signal_emit () at /lib64/libpurple.so.0
#4 0x00005555555c0443 in private_gtkconv_new ()
#5 0x00005555555c04cb in pidgin_conv_new ()
#6 0x00007ffff4dda795 in purple_conversation_new () at /lib64/libpurple.so.0
#7 0x00007ffff4e0cfb6 in serv_got_joined_chat () at /lib64/libpurple.so.0
#8 0x00007fffdb5e8ad1 in jabber_presence_parse () at /usr/lib64/purple-2/libjabber.so.0
#9 0x00007fffdb5d9b2b in jabber_process_packet () at /usr/lib64/purple-2/libjabber.so.0
#10 0x00007fffdb5e6644 in jabber_parser_element_end_libxml () at /usr/lib64/purple-2/libjabber.so.0
#11 0x00007ffff41dae13 in xmlParseEndTag2 () at /lib64/libxml2.so.2
#12 0x00007ffff41e099f in xmlParseTryOrFinish () at /lib64/libxml2.so.2
#13 0x00007ffff41e24bb in xmlParseChunk () at /lib64/libxml2.so.2
#14 0x00007fffdb5e6afd in jabber_parser_process () at /usr/lib64/purple-2/libjabber.so.0
#15 0x00007fffdb5d5d6b in jabber_recv_cb_ssl () at /usr/lib64/purple-2/libjabber.so.0
#16 0x00005555555c969e in pidgin_io_invoke ()
#17 0x00007ffff3025e3a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#18 0x00007ffff30261d0 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#19 0x00007ffff30264f2 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#20 0x00007ffff6b12f37 in gtk_main () at /lib64/libgtk-x11-2.0.so.0
#21 0x000055555558fdf7 in main ()
I hope this is informative enough, otherwise I might be able to build debug versions. But maybe I would need help with this.
Procedure to reproduce, tested with pidgin 2.10.9, purple-events 0.2 on Sabayon with XMPP: 1) Add a MUC-chat. 2) Enter the chat. 3) Disable logging. 4) Quit Pidgin. 5) Pidgin crashes at startup. (Sometimes it already crashes at 3) or 4))
Crash does not appear when plugin purple-events is disabled. Thats the reason I file the bug here and not over at pidgin. All other plugins were disabled, backtrace is here: