cht電腦資訊gcin
adm Find login register

在 LilyTerm 及 Evilvet 上下達 killall gcin 會導致 segfault

Tetralet
1 在 LilyTerm 及 Evilvet 上下達 killall gcin 會導致 segfault
Promote 0 Bookmark 02010-01-19quote  

這個情況是常常發生,但不一定會發生,所以有點難 debug。

以下為 LilyTerm 的 gdb 資訊:

(gdb) bt
#0  0xb7fe1424 in __kernel_vsyscall ()
#1  0xb761c443 in write () from /lib/i686/cmov/libc.so.6
#2  0xb6c57586 in handle_write (handle=0x812f590, ptr=0xbffff5c8, n=52)
    at gcin-im-client.cpp:525
#3  0xb6c5811e in gcin_im_client_set_cursor_location (handle=0x812f590,
    x=<value optimized out>, y=<value optimized out>) at gcin-im-client.cpp:721
#4  0xb6c5c640 in gtk_im_context_gcin_set_cursor_location (context=0x80df960,
    area=0xbffff710) at gtkimcontextgcin.c:599

#5  0xb7c959ae in gtk_im_context_set_cursor_location ()
   from /usr/lib/libgtk-x11-2.0.so.0
#6  0xb7c959ae in gtk_im_context_set_cursor_location ()
   from /usr/lib/libgtk-x11-2.0.so.0
#7  0xb7f65fc8 in ?? () from /usr/lib/libvte.so.9
#8  0xb7f6684a in ?? () from /usr/lib/libvte.so.9
#9  0xb7f66e58 in ?? () from /usr/lib/libvte.so.9
#10 0xb76de5e6 in ?? () from /lib/libglib-2.0.so.0
#11 0xb76ddf28 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#12 0xb76e16b3 in ?? () from /lib/libglib-2.0.so.0
#13 0xb76e1b7a in g_main_loop_run () from /lib/libglib-2.0.so.0
#14 0xb7cb0f09 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#15 0x0805af60 in main (argc=1, argv=0x0) at main.c:128


而以下為 Evilvte 的 gdb 資訊:

(gdb) bt
#0  0xb7fe1424 in __kernel_vsyscall ()
#1  0xb7eb5443 in write () from /lib/i686/cmov/libc.so.6
#2  0xb6949586 in handle_write (handle=0x812eb10, ptr=0xbffff578, n=52)
    at gcin-im-client.cpp:525
#3  0xb694a11e in gcin_im_client_set_cursor_location (handle=0x812eb10,
    x=<value optimized out>, y=<value optimized out>) at gcin-im-client.cpp:721
#4  0xb694e640 in gtk_im_context_gcin_set_cursor_location (context=0x80bf8c0,
    area=0xbffff6c0) at gtkimcontextgcin.c:599

#5  0xb7b4e9ae in gtk_im_context_set_cursor_location ()
   from /usr/lib/libgtk-x11-2.0.so.0
#6  0xb7b4e9ae in gtk_im_context_set_cursor_location ()
   from /usr/lib/libgtk-x11-2.0.so.0
#7  0xb7f65fc8 in ?? () from /usr/lib/libvte.so.9
#8  0xb7f6684a in ?? () from /usr/lib/libvte.so.9
#9  0xb7f66e58 in ?? () from /usr/lib/libvte.so.9
#10 0xb79795e6 in ?? () from /lib/libglib-2.0.so.0
#11 0xb7978f28 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#12 0xb797c6b3 in ?? () from /lib/libglib-2.0.so.0
#13 0xb797cb7a in g_main_loop_run () from /lib/libglib-2.0.so.0
#14 0xb7b69f09 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#15 0x08049924 in main (argc=135463528, argv=0x1) at src/sakura.c:3384

希望能有助於找出問題。

eliu
2
Promote 0 Bookmark 02010-01-19quote  
caleb
3
Promote 0 Bookmark 02010-01-19quote  

我自己是沒遇過,lilyterm / evilvte 都完全沒事。

Tetralet 在 irc 上說用 -Os 編的話,比較容易出現,但 evilvte 預設就使用 -Os, 我自己 daily use 的 evilvte 也是 -Os, 沒遇過此問題。

eliu
4
Promote 0 Bookmark 02010-01-19quote  

搞不好 -Os 把底下的順序弄亂了

 
#if 1
  save_old_sigaction(&save_act);
#endif
  int r =  write(fd, tmp, n);
 

cht電腦資訊gcin
adm Find login register
views:10182