| Tetralet 
  joined:
2007-11-27
 posted:
255
 promoted: 35
 bookmarked: 13
 
 | | 1 | subject:
怪問題... gcin + chewing 會 segfault |  0  0 | 2011-10-17 | quote |  |  | 
 把 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 
  joined:
2007-08-09
 posted:
11512
 promoted: 617
 bookmarked: 187
 新竹, 台灣
 | inmd[in_no].mod_cb_funcs->module_init_win 是 NULL 或不合理的 value 嗎?在 gdb print 出來看看 module 有沒有 重新 compile & install ?edited: 1
 | 
| Tetralet 
  joined:
2007-11-27
 posted:
255
 promoted: 35
 bookmarked: 13
 
 | | 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 
  joined:
2007-11-27
 posted:
255
 promoted: 35
 bookmarked: 13
 
 | 忘了說,anthy 是好的,不是 NULL 值: ** (gcin:9329): DEBUG: inmd[in_no].mod_cb_funcs = 0x800a30 | 
| Tetralet 
  joined:
2007-11-27
 posted:
255
 promoted: 35
 bookmarked: 13
 
 | 追了半天,結論:用快捷鍵 <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 
  joined:
2007-11-27
 posted:
255
 promoted: 35
 bookmarked: 13
 
 | 該 bug 已可實現: 在 gcin-setup 裡把 anthy 和 chewing 勾起來,然後把 greek 勾掉,接著按 <Ctrl><Shift> 來切換輸入法,
 應該可以發現在由 anthy 切到 chewing 時 gcin 當掉了。
edited: 2
 | 
| eliu 
  joined:
2007-08-09
 posted:
11512
 promoted: 617
 bookmarked: 187
 新竹, 台灣
 |  |