[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:47963] Re: etchのgimpでペンタブレットを使用していると落ちる?



平川です
早速のアドバイスありがとうございます
うっかりしていて、セグメンテーション違反と同時に出ていたメッセージを忘れていました

$ gimp
セグメンテーション違反です
(script-fu:PID): LibGimpBase-WARNING **: script-fu: wire_read(): error

・straceパッケージをインストールし、strace -o /tmp/gimp.log gimp
  のようにして落ちるまでのログを吐かせてみる。

straceの存在を知りませんでした。こんな強力なトレーサがあるんですね
ただ、セグメンテーションフォルト直前のコールがread関数のように見えましたが
私の理解力では原因を探るヒントにはできなさそうです orz

$ tail /tmp/gimp.log

2795  read(3, "\16%\\>\253X@\2\0\0>\10\340\336\34\10\25J\t\10P\345\302"...,
32) = 32
2795  read(3, "\1\36j>\33\0\0\0\3\0\0\0\2\0\0\0\360%\34\10
\20\320\10"..., 32) = 32
2795  read(3, "\0$
A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 108) = 108
2795  --- SIGSEGV (Segmentation fault) @ 0 (0) ---
2796  <... select resumed> )            = 1 (in [6])
2795  +++ killed by SIGSEGV +++
2796  read(6, "", 4)                    = 0
2796  write(2, "\n(script-fu:2796): LibGimpBase-W"..., 73) = 73
2796  shmdt(0xb7efa000)                 = 0
2796  exit_group(0)                     = ?

changelog.gzを見て怪しそうなのはapp/display/gimpdisplayshell.cの変更
あたりかなぁ…。
・あまり有益な情報が出ない場合、デバッグシンボルを有効にした
パッケージを作成し、gdbなどのデバッガ環境上で実行する。落ちたら
バックトレースを調べる。

本家からgimp-2.2.13.tar.gzを持ってきて
--enable-debugビルドして$ screen gdb gimpとしたのですが、問題の操作をしたとたん
gimpがX.orgのイベントドリブンを道連れに入力受付しなくなってしまいました
ただ、topでみるかぎりプロセッサ時間を食いつぶしてる様子もないので
恐らくgimpがwacomモジュールとうまく連携取れずに火の車になったのでしょうか?
linux console から screen -x としてbtのハードコピーを撮ってみたのですが
武藤さんの睨んだ通りgimpdisplayshellが関係してそう?です

#0  gimp_display_shell_canvas_tool_events (canvas=0x8c4cda0, event=0x9335000,
   shell=0x8376270) at gimpdisplayshell-callbacks.c:1070
#1  0x41fa0250 in _gtk_marshal_BOOLEAN__BOXED ()
  from /usr/lib/libgtk-x11-2.0.so.0
#2  0x41c3d98b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#3  0x41c4df2d in g_signal_chain_from_overridden ()
  from /usr/lib/libgobject-2.0.so.0
#4  0x41c4f208 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#5  0x41c4f5d9 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#6  0x42089e84 in gtk_widget_get_default_style ()
  from /usr/lib/libgtk-x11-2.0.so.0
#7  0x41f99bd3 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#8  0x41f9ae07 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#9  0x421a0eea in _gdk_events_init () from /usr/lib/libgdk-x11-2.0.so.0
#10 0x41bcb731 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#11 0x41bce7a6 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#12 0x41bceb67 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#13 0x08063165 in app_run (full_prog_name=0xbfa35554 "/usr/local/bin/gimp",
   gimp_argc=0, gimp_argv=0xbfa33e58, alternate_system_gimprc=0x0,
   alternate_gimprc=0x0, session_name=0x0, batch_interpreter=0x0,
   batch_commands=0x83939b0, no_interface=0, no_data=0, no_fonts=0,
   no_splash=0, be_verbose=0, use_shm=1, use_cpu_accel=1, console_messages=0,
   stack_trace_mode=GIMP_STACK_TRACE_NEVER,
   pdb_compat_mode=GIMP_PDB_COMPAT_ON) at app_procs.c:376
#14 0x08063e06 in main (argc=Cannot access memory at address 0x7026
) at main.c:473
(gdb)