致命的 #799
完了
Takaaki TSUJIMOTO さんがほぼ9年前に追加.
ほぼ9年前に更新.
プラグイン名:
display_requirements
説明
ArchLinux
ruby 2.2.4p230
ruby-glib2 2.2.5
ruby-atk 2.2.5
ruby-cairo 1.14.3
ruby-pango 2.2.5
ruby-gdk_pixbuf2 2.2.5
ruby-gtk2 2.2.5
ruby-nokogiri 1.6.6.2
ruby-httpclient 2.6.0.1
ruby-moneta 0.8.0
mikutter 3.2.11
現象
ツイートをクリックするとGdk::MiraclePainter#clicked()でiob_clicked()を呼んだ時にセグフォで落ちる。
mikutter3.2.10は同じ環境でも落ちない¶
ファイル
簡単にできるところで、RubyGTK2とかを 2.2.5にしましたが、正常に動いているように見えます。
一応、2.2.5はサポートしていないことになっているので、そっちのメンテナを突付いたほうがいいかもしれませんね。
一応、回避策としてdisplay_requirementsプラグインを入れると落ちないことを発見しました。
Takaaki TSUJIMOTO は書きました:
一応、回避策としてdisplay_requirementsプラグインを入れると落ちないことを発見しました。
これを見て NetBSD/i386 7.0 で mikutter 3.2.11 + ruby-gnome2 3.0.7 で試してみたのですが、
- ~/.mikutter/plugin/display_requirements.rb があると落ちない
- ~/.mikutter/plugin/display_requirements.rb がないとツイートクリックすると落ちる
で再現性ある感じですね……。ちょっとマズいかも。
mikutter --debug でログ取ってみましたが
notice: {MIKUTTER_DIR}/core/mui/cairo_cell_renderer_message.rb:106:in `block in tree=': now: 1 last: 0
notice: {MIKUTTER_DIR}/core/plugin/gui/hierarchy_parent.rb:71:in `set_active_child': active child set #<Plugin::GUI::Timeline(role=timeline,slug=home_timeline)> => nil
notice: {MIKUTTER_DIR}/core/plugin/gui/hierarchy_parent.rb:71:in `set_active_child': active child set #<Plugin::GUI::Tab(role=tab,slug=home_timeline)> => #<Plugin::GUI::Timeline(role=timeline,slug=home_timeline)>
notice: {MIKUTTER_DIR}/core/plugin/gui/hierarchy_parent.rb:71:in `set_active_child': active child set #<Plugin::GUI::Pane(role=pane,slug=__Plugin::GUI::Pane_2071_54a42046_61a3e473)> => #<Plugin::GUI::Tab(role=tab,slug=home_timeline)>
notice: {MIKUTTER_DIR}/core/plugin/gui/hierarchy_parent.rb:71:in `set_active_child': active child set #<Plugin::GUI::Window(role=window,slug=default)> => #<Plugin::GUI::Pane(role=pane,slug=__Plugin::GUI::Pane_2071_54a42046_61a3e473)>
/usr/pkg/share/mikutter/core/plugin/display_requirements/display_requirements.rb:175:in `iob_clicked': wrong number of arguments (2 for 0)
display_requirements.rb:175:in `iob_clicked'
がダメなんでしょうか。
Izumi Tsutsui は書きました:
display_requirements.rb:175:in `iob_clicked'
がダメなんでしょうか。
0dfd5e20 の core/mui/cairo_icon_over_button.rb の差分からコピペして
添付のように displayrequirements.rb の iob_clicked を直すと一応動いているようです。
が、これってプラグイン互換性の観点からするとどうなんですかね?
おお、DRプラグインでしたか。そんなのもありましたね。
- 担当者 を toshi_a 初音 にセット
- プラグイン名 を display_requirements にセット
再現できました。これは修正漏れですね。
もともと非互換な変更にdisplay_requirementsが対応していないだけなので、このパッチで正しいです。
- ステータス を 新規 から レビュー待ち に変更
- 担当者 を toshi_a 初音 から Takaaki TSUJIMOTO に変更
修正してみました。一応つじもんさんの環境でも確認してもらえますか?つついさんもお願いします。
c061b55c の display_requirements.rb を 3.2.11 のインストールツリーに上書きして、
~/.mikutter/plugin/display_requirements.rb のない状態で mikutter 起動して青い鳥ありの状態で、
ツイートをクリックしても仕様(?)通り(ツイート再描画; ユーザーアイコンクリックなら profile オープン)
で問題ありません。
#679 でもありましたが、DRの罠を回避するにはどうするのがいいんですかね〜。
リビジョン c061b55c でツイートをクリックしても落ちずに動作していることを確認できました!
他の形式にエクスポート: Atom
PDF