Project

General

Profile

バグ #1440

メモリ消費が極端に増えることがある

Added by toshi_a 初音 6 months ago. Updated 6 months ago.

Status:
実装待ち
Priority:
通常
Target version:
プラグイン名:
ブランチ:
クラッシュする:
No

Description

#1437 の適用後、メモリ消費が極端に増えることがある。
以下、サードパーティプラグインが全く同じ場合の推移。

developブランチ( bd81d3042d6c5075102894ec2a962fea7982397a )のRSSの推移
(masterの下記リビジョンをmergeしていない)

develop@bd81d304 (サードパーティプラグインが入った状態)

masterブランチ( 0125909c1e37573482430207a050b2aadb30190f )のRSSの推移

master@0125909c (サードパーティプラグインが入った状態)

ガベージコレクションのタイミングなどではなく、巨大なオブジェクトの参照を抱えている。
上記の2リビジョンの調査で、ほとんど 0125909c1e37573482430207a050b2aadb30190f で発生する不具合であることは特定できている。
このチケットの目的は、現在のmasterの画像のように、RSSが短時間で数GB上下するようなことなく、メモリリークを修正してdevelopのようにもとの単調増加の状態に持っていくことである。


Files

develop.png (11.2 KB) develop.png develop@bd81d304 (サードパーティプラグインが入った状態) toshi_a 初音, 2020-03-22 15:45
master.png (19.2 KB) master.png master@0125909c (サードパーティプラグインが入った状態) toshi_a 初音, 2020-03-22 15:45
RSS vs. time.png (22.7 KB) RSS vs. time.png master@6875d36c (サードパーティプラグインが入った状態、0125909cをrevert済み) toshi_a 初音, 2020-03-26 02:08
log (21 KB) log toshi_a 初音, 2020-04-07 08:52

Related issues

Related to バグ #1437: 画像をホストしているオブジェクトストレージなどの画像を数個同時にリクエストすると、一切の画像取得がロード中で止まる終了toshi_a 初音Actions
#1

Updated by toshi_a 初音 6 months ago

  • Related to バグ #1437: 画像をホストしているオブジェクトストレージなどの画像を数個同時にリクエストすると、一切の画像取得がロード中で止まる added
#2

Updated by toshi_a 初音 6 months ago

プラグインの構成が全く同じ環境で、原因となっていると思われていた 0125909c1e37573482430207a050b2aadb30190f だけをrevertした結果。
0125909c1e37573482430207a050b2aadb30190f が問題だったわけではないことがわかった。

いずれの結果も同じサードパーティプラグインが入った状態で計測されているので、developでは問題が発生せずmasterで問題が起こっている?
サードパーティプラグインとの複合バグの可能性が出てきたので、以下の状態を再度計測して、そちらの結果を使う。

  • master@0125909c (vanilla)
  • (vanilla)
  • develop@bd81d304 (vanilla)
#3

Updated by toshi_a 初音 6 months ago

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%になっているように思う。

なんとなく関係がありそうなので、この問題が起こったリビジョンを特定し、その前後でメモリの消費傾向を取得してみる。

#4

Updated by Izumi Tsutsui 6 months ago

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の利用をやめる」
をマージした状態で起動すると、この警告が出なくなっているようにも見えるのですが、まだ半日程度なので悪魔の証明状態です。
(引き続き検証中)

Also available in: Atom PDF