プロジェクト

全般

プロフィール

環境対応 #1260

gtk2 3.2.7を利用する

Akira Ouchi5ヶ月前に追加. 約2ヶ月前に更新.

ステータス:
却下
優先度:
通常
担当者:
-
対象バージョン:
開始日:
2018-06-06
期日:
進捗率:

0%

プラグイン名:

説明

#1221-5 の修正を含むruby-gnome2 3.2.6/3.2.7がリリースされたので、3.2.7が利用できるか検証して適用する。

3.2.6 NEWS
https://github.com/ruby-gnome2/ruby-gnome2/blob/3.2.6/NEWS

3.2.7 NEWS
https://github.com/ruby-gnome2/ruby-gnome2/blob/3.2.7/NEWS


関連するチケット

関連している 環境対応 #1211: 「設定」のスキンを選択すると Ruby が core を吐いて落ちる終了

関連している 提案 #1292: gtk2 3.2.9を利用する終了

履歴

#1 Akira Ouchi5ヶ月前に更新

core/plugin/gtk2/Gemfileを書き換えたあと、bundleを実行したところgtk2のGem以外がインストールされませんでした。

$ bundle
Your Gemfile lists the gem httpclient (>= 0) more than once.
You should probably keep only one of them.
While it's not a problem now, it could cause errors if you change the version of one of them later.
Fetching gem metadata from https://rubygems.org/................
Resolving dependencies...
Using rake 10.5.0
Using public_suffix 3.0.2
Using addressable 2.5.2
Using bundler 1.16.1
Using safe_yaml 1.0.4
Using crack 0.4.3
Using delayer 0.0.2
Using delayer-deferred 2.0.0
Using diva 0.3.2
Using egison 1.0.0
Using eventmachine 1.2.7
Using multipart-post 2.0.0
Using faraday 0.15.1
Using faraday_middleware 0.10.1
Using websocket-extensions 0.1.3
Using websocket-driver 0.7.0
Using faye-websocket 0.10.7
Using locale 2.1.2
Using text 1.3.1
Using gettext 3.0.9
Fetching gtk2 3.2.6 (was 3.2.1)
Installing gtk2 3.2.6 (was 3.2.1) with native extensions
Using hashdiff 0.3.7
Using httpclient 2.8.3
Using idn-ruby 0.1.0
Using instance_storage 1.0.0
Using json_pure 1.8.6
Using matsuya 0.1.1
Using memoist 0.16.0
Using metaclass 0.0.4
Using mini_portile2 2.3.0
Using mocha 0.14.0
Using moneta 1.0.0
Using multi_json 1.13.1
Using nokogiri 1.8.2
Using oauth 0.5.4
Using pluggaloid 1.1.1
Using power_assert 1.1.1
Using ruby-hmac 0.4.0
Using ruby-prof 0.17.0
Using slack-api 1.6.0
Using terminal-notifier 2.0.0
Using test-unit 3.2.8
Using totoridipjp 0.1.0
Using unf_ext 0.0.7.5
Using unf 0.1.4
Using twitter-text 2.1.0
Using typed-array 0.1.2
Using watch 0.1.0
Using webmock 1.24.6
Bundle complete! 27 Gemfile dependencies, 49 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

この状態で起動しても、glib2がないと言われて起動に失敗します。

akkie@172-16-5-168 ~/mikutter (master)$ ruby mikutter.rb --debug

notice: {MIKUTTER_DIR}/core/miquire_plugin.rb:155:in `block in load': plugin loaded: {MIKUTTER_DIR}/core/plugin/gtk/gtk.rb
Traceback (most recent call last):
    40: from mikutter.rb:42:in `<main>'
    39: from /Users/akkie/mikutter/core/miquire.rb:18:in `miquire'
    38: from /Users/akkie/mikutter/core/miquire.rb:75:in `miquire'
    37: from /Users/akkie/mikutter/core/miquire.rb:75:in `each'
    36: from /Users/akkie/mikutter/core/miquire.rb:76:in `block in miquire'
    35: from /Users/akkie/mikutter/core/miquire.rb:95:in `file_or_directory_require'
    34: from /Users/akkie/mikutter/core/miquire.rb:98:in `miquire_original_require'
    33: from /Users/akkie/mikutter/core/miquire.rb:98:in `require'
    32: from /Users/akkie/mikutter/core/boot/load_plugin.rb:10:in `<top (required)>'
    31: from /Users/akkie/mikutter/core/miquire_plugin.rb:96:in `load_all'
    30: from /Users/akkie/mikutter/core/miquire_plugin.rb:36:in `each_spec'
    29: from /Users/akkie/mikutter/core/miquire_plugin.rb:33:in `each'
    28: from /Users/akkie/mikutter/core/miquire_plugin.rb:33:in `each'
    27: from /Users/akkie/mikutter/core/miquire_plugin.rb:38:in `block in each_spec'
    26: from /Users/akkie/mikutter/core/miquire_plugin.rb:98:in `block in load_all'
    25: from /Users/akkie/mikutter/core/miquire_plugin.rb:146:in `load'
    24: from /Users/akkie/mikutter/core/utils.rb:278:in `atomic'
    23: from /Users/akkie/.rbenv/versions/2.5.0/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
    22: from /Users/akkie/mikutter/core/utils.rb:278:in `block in atomic'
    21: from /Users/akkie/mikutter/core/miquire_plugin.rb:147:in `block in load'
    20: from /Users/akkie/mikutter/core/miquire_plugin.rb:147:in `each'
    19: from /Users/akkie/mikutter/core/miquire_plugin.rb:149:in `block (2 levels) in load'
    18: from /Users/akkie/mikutter/core/miquire_plugin.rb:146:in `load'
    17: from /Users/akkie/mikutter/core/utils.rb:278:in `atomic'
    16: from /Users/akkie/.rbenv/versions/2.5.0/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
    15: from /Users/akkie/mikutter/core/utils.rb:278:in `block in atomic'
    14: from /Users/akkie/mikutter/core/miquire_plugin.rb:147:in `block in load'
    13: from /Users/akkie/mikutter/core/miquire_plugin.rb:147:in `each'
    12: from /Users/akkie/mikutter/core/miquire_plugin.rb:149:in `block (2 levels) in load'
    11: from /Users/akkie/mikutter/core/miquire_plugin.rb:146:in `load'
    10: from /Users/akkie/mikutter/core/utils.rb:278:in `atomic'
     9: from /Users/akkie/.rbenv/versions/2.5.0/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
     8: from /Users/akkie/mikutter/core/utils.rb:278:in `block in atomic'
     7: from /Users/akkie/mikutter/core/miquire_plugin.rb:158:in `block in load'
     6: from /Users/akkie/mikutter/core/miquire_plugin.rb:158:in `load'
     5: from /Users/akkie/mikutter/core/plugin/gtk/gtk.rb:5:in `<top (required)>'
     4: from /Users/akkie/mikutter/core/plugin/gtk/gtk.rb:5:in `require'
     3: from /Users/akkie/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/gtk2-3.2.6/lib/gtk2.rb:11:in `<top (required)>'
     2: from /Users/akkie/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/gtk2-3.2.6/lib/gtk2.rb:11:in `require'
     1: from /Users/akkie/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/gtk2-3.2.6/lib/gtk2/base.rb:12:in `<top (required)>'
/Users/akkie/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/gtk2-3.2.6/lib/gtk2/base.rb:12:in `require': cannot load such file -- glib2 (LoadError)

他の方もそうなるようであればruby-gnome側の問題かなと思います。
よくわかってないけど、gemspec周りがいじられているようです。。

(またなのか…?)

#2 Akira Ouchi5ヶ月前に更新

core/plugin/gtk2/Gemfileを以下の通り書きこんでbundleした結果動作しました。3.2.5の問題も解消されているようです。以下の通り書くべきなのかどうかが問題っぽい気がしますが。

source 'https://rubygems.org'

gem 'atk', '3.2.6'
gem 'cairo'
gem 'cairo-gobject', '3.2.6'
gem 'gdk_pixbuf2', '3.2.6'
gem 'gio2', '3.2.6'
gem 'glib2', '3.2.6'
gem 'gobject-introspection', '3.2.6'
gem 'gtk2', '3.2.6'
gem 'pango', '3.2.6'

#3 toshi_a 初音5ヶ月前に更新

前も同様の問題がありましたが、程なく次のリリースがあったため特に対応はしませんでした。
今回も上流のアップデートを待っても良いですが、直近のバージョンは相次いでmikutterでは問題が発生していて依然3.2.1を使っている状態なので、これだけでアップデートできるならやってしまってもいいかもしれません。

#4 Izumi Tsutsui5ヶ月前に更新

https://rubygems.org/ の表示でも Runtime Dependencies の表示が消えているので
明示的に upstream でバグっていますね……

https://rubygems.org/gems/gtk2/versions/3.2.5
https://rubygems.org/gems/gtk2/versions/3.2.6

以下の変更っぽいですが。
https://github.com/ruby-gnome2/ruby-gnome2/commit/54ad9751c34a19e1748ccd8cab424e4c83b2e8a4

#5 Akira Ouchi4ヶ月前に更新

  • 題名gtk2 3.2.6を利用する から gtk2 3.2.7を利用する に変更
  • 説明 を更新 (diff)

新しくチケット作るのあれだったのでタイトルかえました

#6 Akira Ouchi4ヶ月前に更新

3.2.7よさげ。

#7 Izumi Tsutsui4ヶ月前に更新

pkgsrc も ruby-gnome2 3.2.7 にして、それで mikutter 3.7.1 は特に問題なく動いているようです
http://mail-index.netbsd.org/pkgsrc-changes/2018/06/09/msg176947.html

#8 Izumi Tsutsui4ヶ月前に更新

Izumi Tsutsui さんは書きました:

pkgsrc も ruby-gnome2 3.2.7 にして、それで mikutter 3.7.1 は特に問題なく動いているようです
http://mail-index.netbsd.org/pkgsrc-changes/2018/06/09/msg176947.html

ruby-gnome2 3.2.7 にすると 3.2.5 と比べて mikutter のメモリ消費量がかなり増えるような気がする、
という話があります。


https://social.mikutter.hachune.net/@tsutsuii/100181781857287528

Izumi Tsutsui
@tsutsuii

mikutter 3.7.2 ではまだ検証していないのですが、 ruby-gnome2 3.2.5 と 3.2.7 とで mikutter を動かしてみると、 3.2.7 のほうが明らかにメモリ消費量の増え方が激しいですね……(起動後2時間でのなんとなくの比較)
2018年6月11日 2:44 · mikutter Worldon


https://social.mikutter.hachune.net/@tsutsuii/100181799514917663

Izumi Tsutsui
@tsutsuii

toshi_a 初音 感覚的な数字だけでちゃんと条件をそろえた記録ができていませんが
・3.2.5: 600MB くらいから始まって 4,5日経ってようやく 1GB 超えるかどうか(昔と比べるとかなり優秀)
・3.2.7: 起動して6時間で 2GBに迫っている(えっ、どういうこと)
みたいな印象
2018年6月11日 2:49 · mikutter Worldon


とりあえず ておくれ Live Image で
mikutter 3.7.2 + ruby-gnome2 3.2.5 の VM
mikutter 3.7.2 + ruby-gnome2 3.2.7 の VM
を作ってみたので同時実行でメモリ消費量を調べてみます。

開始早々差があるような気も……

なお、上記 pkgsrc の 3.2.5 の ruby-gnome2 には #1221#note-5 の修正も含まれています。
http://mail-index.netbsd.org/pkgsrc-changes/2018/05/26/msg176376.html

#9 Izumi Tsutsui4ヶ月前に更新

3時間経過後

差は開く一方ですが、どう報告したもんですかね……
(しかし、 3.2.5 の場合はほとんどリークしていないということなんですかね)

#10 Izumi Tsutsui4ヶ月前に更新

24時間後

3.2.7 だとツイート一つ表示するたびに 24〜36KB 増える感じですが
3.2.5 だと何かしらのイベント的なものが発生したときだけ増える感じですね。

#11 Izumi Tsutsui4ヶ月前に更新

  • 関連している 環境対応 #1211: 「設定」のスキンを選択すると Ruby が core を吐いて落ちる を追加

#12 Izumi Tsutsui4ヶ月前に更新

寝れないのでメモ

3.2.7 + 上記前者の 438be7c の pango の変更(ファイル削除)を戻すと
メモリ消費について 3.2.5 と同様に戻るっぽいので、
各パッケージシステムで個別に暫定対処するならこれ?
https://social.mikutter.hachune.net/@tsutsuii/100300621463258235

ruby-gnome2 3.2.7 に対して https://github.com/ruby-gnome2/ruby-gnome2/commit/438be7c505f1f4f5a7e19235bc6d00f1b6d045f6 だけ元に戻す(≒再度追加する)だけでも解決する感じですが、ログとの相関がまったくなくて、中の人じゃないとさっぱり原理がわからない感じ

#13 Izumi Tsutsui4ヶ月前に更新

経過メモ

上記の報告に対する修正が以下
https://github.com/ruby-gnome2/ruby-gnome2/commit/8816bbd86de838a7de18df8649847fb6586ddb4d

が、上記を当てると mikutter で TL 表示した途端に ruby 自体が assertion で落ちるという現象になり
新たに issue 報告
https://github.com/ruby-gnome2/ruby-gnome2/issues/1231

更に上記の assertion の修正が以下
https://github.com/ruby-gnome2/ruby-gnome2/commit/ec4160b4f4c5432c6ff8a9e962e7ffeacfd48869

これで直っているというか、「mikutter のメモリ使用量が増加だけでなく減少もする」という事象も
観測されている感じ
https://social.mikutter.hachune.net/@tsutsuii/100316761415213526

Izumi Tsutsui
@tsutsuii
https://github.com/ruby-gnome2/ruby-gnome2/commit/ec4160b4f4c5432c6ff8a9e962e7ffeacfd48869
足りない気合を振り絞って ruby-gnome2 修正のテスト。メモリ使用量が増えたり減ったりして判定が難しいけれど、1分とかの単位で減るということは正しくGCされるようになったと考えるべきか


このままの状態で 3.2.8 が出れば今度こそ平和に適用できますかね……

#14 Izumi Tsutsui2ヶ月前に更新

3.2.8 出ましたが
https://github.com/ruby-gnome2/ruby-gnome2/releases/tag/3.2.8
gem がバグっているようなので 3.2.9 待ちということになりそうです。
https://github.com/ruby-gnome2/ruby-gnome2/issues/1236

3.2.6 からこのチケットを引っ張っていますが、
新しいチケットを起こすのは 3.2.9 が出てからですかね……

#15 Akira Ouchi約2ヶ月前に更新

  • ステータス新規 から 却下 に変更

そして #1292 へ…

#16 Akira Ouchi約2ヶ月前に更新

  • 関連している 提案 #1292: gtk2 3.2.9を利用する を追加

他の形式にエクスポート: Atom PDF