致命的 #605
完了しばらく動作させた後、メッセージをクリックすると落ちる
0%
説明
mikutterを1〜2時間くらい愉快に使っていると、なんかdestroyされたミラクルペインターでreleaseイベントが発生するタイミングがあるらしく、それを引き当てると落ちます。
releaseが発生するメカニズムを探っていたんですが、どうもよくわからず。
一先ずmiracle_painter.rbのreleasedでdestoroyされたかチェックする様にしました。
developブランチのformat-patchを添付します。
MacPorts:gtk 2.24.20、ruby19 1.9.3-p448
gem: gtk2 (2.0.0, 1.2.6)
----- 出た例外 -----
/Users/moguno/mikutter_shortcut/core/mui/cairo_textselector.rb:32:in `textselector_unselect': can't modify frozen Gdk::MiraclePainter
from /Users/moguno/mikutter_shortcut/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_miracle_painter.rb:182:in `unselect'
from /Users/moguno/mikutter_shortcut/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_miracle_painter.rb:137:in `released'
from /Users/moguno/mikutter_shortcut/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_cell_renderer_message.rb:180:in `block in event_hooks'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_extension.rb:21:in `call'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_extension.rb:21:in `block in safety_signal_connect'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_cell_renderer_message.rb:173:in `event_hooks'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_cell_renderer_message.rb:110:in `tree='
from /Users/moguno/mikutter_shortcut/core/mui/cairo_inner_tl.rb:54:in `block in column_schemer'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:101:in `call'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:101:in `get_render_by'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:88:in `block in set_columns'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:75:in `each'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:75:in `inject'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:75:in `set_columns'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:16:in `initialize'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_tree_view_pretty_scroll.rb:13:in `initialize'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_inner_tl.rb:34:in `initialize'
from /Users/moguno/mikutter_shortcut/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_timeline.rb:44:in `new'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_timeline.rb:44:in `initialize'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_timeline_utils.rb:30:in `new'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_timeline_utils.rb:30:in `new'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/gtk.rb:178:in `block (2 levels) in <top (required)>'
from /Users/moguno/mikutter_shortcut/core/event_listener.rb:25:in `call'
from /Users/moguno/mikutter_shortcut/core/event_listener.rb:25:in `update'
from /opt/local/lib/ruby1.9/1.9.1/observer.rb:195:in `block in notify_observers'
from /opt/local/lib/ruby1.9/1.9.1/observer.rb:194:in `each'
from /opt/local/lib/ruby1.9/1.9.1/observer.rb:194:in `notify_observers'
from /Users/moguno/mikutter_shortcut/core/event.rb:39:in `block (2 levels) in call'
from /Users/moguno/mikutter_shortcut/core/event.rb:39:in `catch'
from /Users/moguno/mikutter_shortcut/core/event.rb:39:in `block in call'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `call'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `run'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/extend.rb:58:in `run_once'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/extend.rb:30:in `run'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer.rb:43:in `method_missing'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/delayer.rb:10:in `block in boot'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/mainloop.rb:10:in `call'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/mainloop.rb:10:in `main'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from /Users/moguno/mikutter_shortcut/mikutter.rb:62:in `boot!'
from /Users/moguno/mikutter_shortcut/mikutter.rb:80:in `<main>'
notice: /Users/moguno/mikutter_shortcut/core/mui/gtk_extension.rb:44:in `rescue in block in __track': require-if-exist: file not found: pry
/opt/local/lib/ruby1.9/gems/1.9.1/gems/glib2-2.0.0/lib/glib2.rb:31:in `exit': exit
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/glib2-2.0.0/lib/glib2.rb:31:in `exit_application'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_cell_renderer_message.rb:94:in `signal_emit'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_cell_renderer_message.rb:94:in `block in tree='
from /Users/moguno/mikutter_shortcut/core/mui/gtk_extension.rb:21:in `call'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_extension.rb:21:in `block in safety_signal_connect'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_extension.rb:16:in `safety_signal_connect'
from /Users/moguno/mikutter_shortcut/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_cell_renderer_message.rb:89:in `tree='
from /Users/moguno/mikutter_shortcut/core/mui/cairo_inner_tl.rb:54:in `block in column_schemer'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:101:in `call'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:101:in `get_render_by'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:88:in `block in set_columns'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:75:in `each'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:75:in `inject'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:75:in `set_columns'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_crud.rb:16:in `initialize'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_tree_view_pretty_scroll.rb:13:in `initialize'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_inner_tl.rb:34:in `initialize'
from /Users/moguno/mikutter_shortcut/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_timeline.rb:44:in `new'
from /Users/moguno/mikutter_shortcut/core/mui/cairo_timeline.rb:44:in `initialize'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_timeline_utils.rb:30:in `new'
from /Users/moguno/mikutter_shortcut/core/mui/gtk_timeline_utils.rb:30:in `new'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/gtk.rb:178:in `block (2 levels) in <top (required)>'
from /Users/moguno/mikutter_shortcut/core/event_listener.rb:25:in `call'
from /Users/moguno/mikutter_shortcut/core/event_listener.rb:25:in `update'
from /opt/local/lib/ruby1.9/1.9.1/observer.rb:195:in `block in notify_observers'
from /opt/local/lib/ruby1.9/1.9.1/observer.rb:194:in `each'
from /opt/local/lib/ruby1.9/1.9.1/observer.rb:194:in `notify_observers'
from /Users/moguno/mikutter_shortcut/core/event.rb:39:in `block (2 levels) in call'
from /Users/moguno/mikutter_shortcut/core/event.rb:39:in `catch'
from /Users/moguno/mikutter_shortcut/core/event.rb:39:in `block in call'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `call'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `run'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/extend.rb:58:in `run_once'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer/extend.rb:30:in `run'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/delayer-0.0.2/lib/delayer.rb:43:in `method_missing'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/delayer.rb:10:in `block in boot'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/mainloop.rb:10:in `call'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/mainloop.rb:10:in `main'
from /Users/moguno/mikutter_shortcut/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from /Users/moguno/mikutter_shortcut/mikutter.rb:62:in `boot!'
from /Users/moguno/mikutter_shortcut/mikutter.rb:80:in `<main>'
notice: /Users/moguno/mikutter_shortcut/mikutter.rb:68:in `rescue in boot!': SystemExit
Alicia:mui moguno$ ruby1.9 ~/mikutter_shortcut/mikutter.rb --debug
ファイル