把 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)
|
inmd[in_no].mod_cb_funcs->module_init_win 是 NULL 或不合理的 value 嗎?在 gdb print 出來看看
module 有沒有 重新 compile & install ?
edited: 1
|
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
|
忘了說,anthy 是好的,不是 NULL 值:
** (gcin:9329): DEBUG: inmd[in_no].mod_cb_funcs = 0x800a30
|
追了半天,結論:用快捷鍵 <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 值的問題。
請劉老大追追看了吧!
|
該 bug 已可實現:
在 gcin-setup 裡把 anthy 和 chewing 勾起來,然後把 greek 勾掉, 接著按 <Ctrl><Shift> 來切換輸入法, 應該可以發現在由 anthy 切到 chewing 時 gcin 當掉了。
edited: 2
|
|