プロジェクト

全般

プロフィール

致命的 #995

CPU使用率が常に100%になり、メモリを大量に確保しつづけることがある

toshi_a 初音約1ヶ月前に追加. 17日前に更新.

ステータス:
進行中
優先度:
低め
担当者:
対象バージョン:
開始日:
2017-03-16
期日:
進捗率:

0%

プラグイン名:
バックトレース:

なし

再現手順:

不明


説明

CPU使用率が100%となり、使用メモリは毎秒+100MBくらいのペースで増加する。この間、多少動作が重いがmikutterのUIを操作することは出来る。
発生条件は不明で、発生するときは5分くらい使っていたら発生するし、しないときは数日再現しないことがある。

Delayer Deferred 1.1.0にしてから発生するようになったと思われる。プラグインでSample Streamを受信するなどしても発生頻度は変わっていないようなので、ある種類のツイートがトリガーになっているというわけでもないかもしれない。
私以外誰も再現していないようなので優先度は下げるが、この状態になれば数分以内にメモリを食い尽くしてクラッシュするので、致命的な問題として取り扱う。

他に再現した人がいたら、新たなことが分からなくても良いので、このチケットにコメントを残してください。


関連するチケット

ブロック先 バグ #916: 定期的にfollowアクティビティが大量に生成される 進行中 2016-10-11

履歴

#1 toshi_a 初音17日前に更新

  • ブロック先 バグ #916: 定期的にfollowアクティビティが大量に生成される を追加

#2 toshi_a 初音17日前に更新

  • ステータス新規 から 進行中 に変更

どうやらdelayer-deferredの不正な使い方が問題なのではないかと考えた。

現在のdelayer-deferredはJavaScriptのものをほとんど直訳しただけで、nextメソッドを同じDeferredに対して複数回呼ぶなどの不正な操作を受け付けてしまい、その際の動作が未定義だった。
大幅に書き直したdeferred 2.0を試作して、mikutterにそちらを利用させることで詳細なエラーを得て、3.5にもフィードバックしたい。

#3 toshi_a 初音17日前に更新

deferred 2.0を利用したところ、起動直後に以下のようなエラーでクラッシュする。

/home/toshi/Projects/delayer-deferred/lib/delayer/deferred/deferredable/node_sequence.rb:29:in `pull': Invalid sequence flow `stop' to `await'.
     from /home/toshi/Projects/delayer-deferred/lib/delayer/deferred/deferredable/node_sequence.rb:122:in `change_sequence'
     from /home/toshi/Projects/delayer-deferred/lib/delayer/deferred/deferredable/awaitable.rb:20:in `enter_await'
     from /home/toshi/Projects/delayer-deferred/lib/delayer/deferred/request.rb:38:in `accept_request'
     from /home/toshi/Projects/delayer-deferred/lib/delayer/deferred/worker.rb:34:in `block in push'
     from /home/toshi/Projects/mikutter/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `run'
     from /home/toshi/Projects/mikutter/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer/extend.rb:58:in `run_once'
     from /home/toshi/Projects/mikutter/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer/extend.rb:30:in `run'
     from /home/toshi/Projects/mikutter/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer.rb:43:in `method_missing'
     from /home/toshi/Projects/mikutter/core/plugin/gtk/delayer.rb:10:in `block in boot'
     from /home/toshi/Projects/mikutter/core/plugin/gtk/mainloop.rb:10:in `main'
     from /home/toshi/Projects/mikutter/core/plugin/gtk/mainloop.rb:10:in `mainloop'
     from /home/toshi/Projects/mikutter/mikutter.rb:67:in `boot!'
     from /home/toshi/Projects/mikutter/mikutter.rb:96:in `<main>'

2.0ではDeferredチェインベースのバックトレースも生成できるので、こういう時にそれが出力できたほうが良さそう

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