System: Gentoo Linux, xorg-1.4, xfce
App: Firefox 3.0 RC1 (official binary), gcin-1.4.0
發作情形:
運作可,但每次離開Firefox一定跳出Crash report,要求回報,從部份設定無法於下次開啟firefox時生效可知firefox沒有完成關閉流程。X環境中gcin 為GTK immodule ( GTK_IM_MODULE=gcin ),即便不加此參數,gcin亦為預設輸入法,所以也會發作在非常clean的環境之下。
如果在firefox startup script中加上 GTK_IM_MODULE=xim,則上述crash情形不會發生。
Configuration script中的 --new_gtk_im 經測試發現沒有影響。
|
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1238406928 (LWP 7016)]
0xb50262df in ?? ()
(gdb) where
#0 0xb50262df in ?? ()
#1 0xb6c824d1 in g_cclosure_marshal_VOID__BOOLEAN ()
from /usr/lib/libgobject-2.0.so.0
#2 0xb6c74f9d in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#3 0xb6c892c0 in ?? () from /usr/lib/libgobject-2.0.so.0
#4 0xb6c8af0e in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#5 0xb6c8b24b in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#6 0xb6d99013 in gdk_display_close () from /usr/lib/libgdk-x11-2.0.so.0
#7 0xb745b34a in ?? () from /home/dhliu/firefox/libxul.so
#8 0xb6141020 in ?? ()
#9 0x0000000a in ?? ()
#10 0x00000000 in ?? ()
valgrind firefox
==7034== Jump to the invalid address stated on the next line
==7034== at 0x68F82DF: ???
==7034== by 0x5D4001F: ???
==7034== Address 0x68f82df is not stack'd, malloc'd or (recently) free'd
==7034==
==7034== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)
==7034== at 0x40419B7: __libc_sigaction (in /lib/i686/libpthread-2.7.so)
==7034== by 0x4041AA2: sigaction (in /lib/i686/libpthread-2.7.so)
==7034== by 0x41E7B55: (within /home/dhliu/firefox/libxul.so)
==7034== by 0x41E7CF0: (within /home/dhliu/firefox/libxul.so)
==7034== by 0x41E39C9: (within /home/dhliu/firefox/libxul.so)
==7034== by 0x4041917: (within /lib/i686/libpthread-2.7.so)
==7034== by 0x5D4001F: ???
==7034== Address 0xbe8bfb78 is on thread 1's stack
==7090==
==7090== Thread 2:
==7090== Conditional jump or move depends on uninitialised value(s)
==7090== at 0x41EA85E: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41E940B: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x56C847D: clone (in /lib/i686/libc-2.7.so)
==7090==
==7090== Syscall param write(buf) points to uninitialised byte(s)
==7090== at 0x40402CB: (within /lib/i686/libpthread-2.7.so)
==7090== by 0x41EA970: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41E90B4: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41E9B21: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41EA5EE: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41EA0F5: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41EA14D: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41E8FFE: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x41E93D6: (within /home/dhliu/firefox/libxul.so)
==7090== by 0x56C847D: clone (in /lib/i686/libc-2.7.so)
==7090== Address 0xbe8c039c is on thread 1's stack
==7034==
|
這樣看起來似乎不是 gcin gtk im module 造成的問題。
|
Firefox 3.0RC2 結果相同 (系統環境相同)
將 GTK_IM_MODULE 設為 ipa, xim 或其他都很正常,唯設為gcin時會出問題。
|
發現 gnome-teriminal 執行 exit,也有同樣的問題。
Orz
|
找半天還是看不出那邊出問題。gnome-terminal 用的 libgnomebreakpad.so 裏面 memory 的問題似乎很多
==4495== Invalid read of size 4
==4495== at 0x59E71FE: google_breakpad::MinidumpFileWriter::Allocate(unsigned) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E729D: google_breakpad::UntypedMDRVA::Allocate(unsigned) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E6224: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E55C8: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4495== Address 0x56564f4 is on thread 1's stack
==4495==
==4495== Invalid read of size 4
==4495== at 0x59E7203: google_breakpad::MinidumpFileWriter::Allocate(unsigned) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E729D: google_breakpad::UntypedMDRVA::Allocate(unsigned) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E6224: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E55C8: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4495== Address 0x56564f0 is on thread 1's stack
==4495==
==4495== Invalid read of size 4
==4495== at 0x59E722A: google_breakpad::MinidumpFileWriter::Allocate(unsigned) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E729D: google_breakpad::UntypedMDRVA::Allocate(unsigned) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E6224: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E55C8: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4495== Address 0x56564ec is on thread 1's stack
==4495==
==4495== Invalid read of size 4
==4495== at 0x59E7145: google_breakpad::MinidumpFileWriter::Copy(unsigned, void const*, int) (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E6251: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E55C8: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4495== Address 0x56564f4 is on thread 1's stack
==4495==
==4495== Invalid read of size 4
==4495== at 0x59E5685: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4495== Address 0x56564e8 is on thread 1's stack
==4495==
==4495== Invalid read of size 4
==4495== at 0x59E8E5C: google_breakpad::LinuxThread::ResumeAllThreads() const (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E568F: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4495== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==4495==
==4495== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==4495== Access not within mapped region at address 0x0
==4495== at 0x59E8E5C: google_breakpad::LinuxThread::ResumeAllThreads() const (in /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x59E568F: (within /usr/lib/gtk-2.0/modules/libgnomebreakpad.so)
==4495== by 0x530147D: clone (in /lib/i686/libc-2.7.so)
==4481==
==4481== ERROR SUMMARY: 48 errors from 40 contexts (suppressed: 309 from 1)
==4481== malloc/free: in use at exit: 8,389,474 bytes in 41,793 blocks.
|
libgnomebreakpad.so 就是用來 report coredump bug,可以拿掉, gnome-terminal 可以執行但是會出現
Gtk-Message: Failed to load module "gnomebreakpad": libgnomebreakpad.so: cannot open shared object file: No such file or directory
的 message
|
改好了。
麻煩去 cle download gtkimcontextgcin.c
|
取代過後firefox 3rc2 還是會在結束時跳出 crash report
|
不好意思,對 gnome-terminal 的 coredump 有用,firefox 沒有測過。
|
|
取代過後firefox不再顯示crash report了,感謝。
|
請問一下去哪下載已經patch 過的檔案
在cle (gcin 同好會) 底下只有看到 1.4.0 的 release 版
|
感謝calebot 與 eliu 大的協助, 問題不再出現了
|
剛剛發現,使用新的 gtkimcontextgcin.c 之後,configure 時的 --new_gtk_im='N'就沒效了,似乎都會變成 new gtk im。這樣就會引發古時候那個new gtk-im在firefox中造成輸入欄下拉選單閃爍只能選一個的問題(小弟因為這個問題所以一直使用old gtk-im)。在firefox 3系列中網頁中的輸入欄已經沒有這個問題了,可是網址欄和右上角的快速搜尋欄仍然有這個問題。
|
可以用 popup 的 window,也就沒有輸入時, window不顯示
|
感謝,拿掉那行就可以用 old gtk-im 了。Pop-up window 對這個幫助不大。因為不開中文直接輸入英文也會有這樣的情形 。
古時候貼過的影片(目前於Google網頁中輸入已經不會這樣了,但是上面的網址列和快速搜尋欄還是會如影片中這樣無法選擇。)
|
去年還是什麼時候有針對這個問題去解決。
所以用 popup 等於把 new-gtk im 關閉。
現在可以用上下鍵來選擇。
|
確實如您所言。感謝。
|