cht電腦資訊gcin已解決問題
adm Find login register

怪問題... gcin + chewing 會 segfault

Tetralet
1 怪問題... gcin + chewing 會 segfault
Promote 0 Bookmark 02011-10-17quote  

把 gcin 降為 1.6.8 和把 libchewing 降為 0.3.2 都是一樣,
但記得之前是好的。
以下為 dgb 資訊。搞不懂問題出在哪裡... XDD

Program received signal SIGSEGV, Segmentation fault.
0x0000000000409378 in init_in_method (in_no=14) at eve.cpp:945
945           if (inmd[in_no].mod_cb_funcs->module_init_win(&gmf)) {
(gdb) bt
#0  0x0000000000409378 in init_in_method (in_no=14) at eve.cpp:945
#1  0x0000000000409500 in cycle_next_in_method () at eve.cpp:1006
#2  0x0000000000409c46 in ProcessKeyRelease (keysym=65507, kev_state=21)
    at eve.cpp:1296
#3  0x0000000000430b77 in process_client_req (fd=11) at im-dispatch.cpp:296
#4  0x000000000043113e in cb_read_gcin_client_data (source=<optimized out>,
    condition=<optimized out>, data=<optimized out>) at im-srv.cpp:41
#5  0x00007ffff63fbedd in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#6  0x00007ffff63fc6b8 in ?? () from /lib/libglib-2.0.so.0
#7  0x00007ffff63fccfa in g_main_loop_run () from /lib/libglib-2.0.so.0
#8  0x00007ffff6f086f7 in gtk_main ()
   from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#9  0x0000000000408503 in main (argc=1, argv=0x7fffffffe898) at gcin.cpp:648
(gdb)

eliu
2
Promote 0 Bookmark 02011-10-17quote  

inmd[in_no].mod_cb_funcs->module_init_win 是 NULL 或不合理的 value 嗎?在 gdb print 出來看看

module 有沒有 重新 compile & install ?

edited: 1
Tetralet
3
Promote 0 Bookmark 02011-10-17quote  

eliu

inmd[in_no].mod_cb_funcs->module_init_win 是 NULL 或不合理的 value 嗎?在 gdb print 出來看看

module 有沒有 重新 compile & install ?

** (gcin:9329): DEBUG: inmd[in_no].mod_cb_funcs = (nil)

(也就是 inmd[in_no].mod_cb_funcs = NULL)

所以說看不懂 XD

Tetralet
4
Promote 0 Bookmark 02011-10-17quote  

忘了說,anthy 是好的,不是 NULL 值:

** (gcin:9329): DEBUG: inmd[in_no].mod_cb_funcs = 0x800a30

Tetralet
5
Promote 0 Bookmark 02011-10-17quote  

追了半天,結論:用快捷鍵 <Ctrl><Alt><[> 可以,但用 <Ctrl><Shirt> 切換,又剛好是在 modules 間切換的(像是用 <Ctrl><Shirt> 由 Anthy 轉到 Chewing)就會 segfault。

我猜是由 Anthy 轉到 Chewing 時,有些東西未初始化但卻被誤認為已初始化所造成的。

更精確得說,應該是 eve.cpp:929 的 module_cb() 檢查到的是 cs->in_method = 12 的資料,
(所以就沒進行初始化了)
但其實 Chewing 的 cs->in_method = 14 才對,
才會造成 inmd[14].mod_cb_funcs 為 NULL 值的問題。

請劉老大追追看了吧!

Tetralet
6
Promote 0 Bookmark 02011-10-18quote  

該 bug 已可實現:

在 gcin-setup 裡把 anthy 和 chewing 勾起來,然後把 greek 勾掉,
接著按 <Ctrl><Shift> 來切換輸入法,
應該可以發現在由 anthy 切到 chewing 時 gcin 當掉了。

edited: 2
eliu
7
Promote 0 Bookmark 02011-10-19quote  

cht電腦資訊gcin已解決問題
adm Find login register
views:18269