バグ #1440
未完了メモリ消費が極端に増えることがある
説明
#1437 の適用後、メモリ消費が極端に増えることがある。
以下、サードパーティプラグインが全く同じ場合の推移。
developブランチ( bd81d3042d6c5075102894ec2a962fea7982397a )のRSSの推移
(masterの下記リビジョンをmergeしていない)
masterブランチ( 0125909c1e37573482430207a050b2aadb30190f )のRSSの推移
ガベージコレクションのタイミングなどではなく、巨大なオブジェクトの参照を抱えている。
上記の2リビジョンの調査で、ほとんど 0125909c1e37573482430207a050b2aadb30190f で発生する不具合であることは特定できている。
このチケットの目的は、現在のmasterの画像のように、RSSが短時間で数GB上下するようなことなく、メモリリークを修正してdevelopのようにもとの単調増加の状態に持っていくことである。
ファイル
関連するチケット
toshi_a 初音 さんが4年以上前に更新
- 関連している バグ #1437: 画像をホストしているオブジェクトストレージなどの画像を数個同時にリクエストすると、一切の画像取得がロード中で止まる を追加
toshi_a 初音 さんが4年以上前に更新
- ファイル RSS vs. time.png RSS vs. time.png を追加
- 説明 を更新 (差分)
プラグインの構成が全く同じ環境で、原因となっていると思われていた 0125909c1e37573482430207a050b2aadb30190f だけをrevertした結果。
0125909c1e37573482430207a050b2aadb30190f が問題だったわけではないことがわかった。
いずれの結果も同じサードパーティプラグインが入った状態で計測されているので、developでは問題が発生せずmasterで問題が起こっている?
サードパーティプラグインとの複合バグの可能性が出てきたので、以下の状態を再度計測して、そちらの結果を使う。
- master@0125909c (vanilla)
- master@4.0.4 (vanilla)
- develop@bd81d304 (vanilla)
toshi_a 初音 さんが4年以上前に更新
0125909c (master) にて、STDERRに以下のような出力が大量に為されていることが判明した。特に、起動後スクロールなどをして表示されるMessageが変わると多く出力された。
GdkPixbuf-WARNING **: GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close() - this is not allowed. You must explicitly end the data stream to the loader before dropping the last reference.
出力の抜粋を添付している。
bd81d304 (develop) ではこの出力が確認できなかった。
これは感覚的な話だが、上記のような出力が大量に行われるブランチでは、起動後10秒程度にわたってウィンドウの内容が描画されず、CPU使用率が100%になっているように思う。
なんとなく関係がありそうなので、この問題が起こったリビジョンを特定し、その前後でメモリの消費傾向を取得してみる。
Izumi Tsutsui さんが4年以上前に更新
GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close()
はこちらでも出ていました。
https://social.mikutter.hachune.net/@tsutsuii/103923991768343437
GdkPixbuf-WARNING **: GdkPixbufLoader finalized without calling gdk_pixbuf_loader_close() - this is not allowed. You must explicitly end the data stream to the loader before dropping the last reference. from /usr/pkg/lib/ruby/gems/2.6.0/gems/pluggaloid-1.2.0/lib/pluggaloid/filter.rb:33 /usr/pkg/share/mikutter/plugin/gtk/mainloop.rb:18: [BUG] Segmentation fault ruby 2.6.5p114 (2019-10-01 revision 67812) [i486-netbsdelf] なんかおもらししている
master に f4d8b12c 「Delayerの、任意の時間経ってから処理をキューに入れる処理を使い、Reserverの利用をやめる」
をマージした状態で起動すると、この警告が出なくなっているようにも見えるのですが、まだ半日程度なので悪魔の証明状態です。
(引き続き検証中)