Project

General

Profile

致命的 #605

しばらく動作させた後、メッセージをクリックすると落ちる

Added by Satoshi Okuno about 7 years ago. Updated about 7 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
Start date:
2013-07-28
Due date:
% Done:

0%

プラグイン名:
gtk

Description

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


Files

0001-destroy-release.patch (1.52 KB) 0001-destroy-release.patch Satoshi Okuno, 2013-07-28 17:24
#1

Updated by toshi_a 初音 about 7 years ago

  • Status changed from 新規 to レビュー待ち
  • Assignee set to Satoshi Okuno
  • Target version changed from 3.0.0 to 0.2.2

この問題は再現できません。ただ、変更自体は正当なもので、コードを見る限り理論上発生しうるエラーであることは理解できたので、取り込みました。0.2.2でも発生するはずなので、 hotfix-0.2.2 に取り込みました。一応確認お願いします。

#2

Updated by Satoshi Okuno about 7 years ago

  • Status changed from レビュー待ち to 解決

なんかお忙しいそうなところ、ありがとうございます。
差分確認しました。

developにパッチ当てた物で約1日動いてたので大丈夫とは思いますが、
0.2で暫くヒートランしてみようと思います。

本件クローズしまう。

#3

Updated by toshi_a 初音 about 7 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF