バグ #1067
未完了
3.5.11にアップグレード後 Gdk-CRITICALが大量にコンソールに出力されて少し重くなる
kagura1050 てお さんが約7年前に追加.
約7年前に更新.
説明
3.5.9(git)を使っていて3.5.11をgit pullしました(bundler installは実行済み)
するとTLが描画(更新?)されるとき(数十個ぐらい)大量に
Gdk-CRITICAL **: gdk_window_invalidate_rect_full: assertion 'GDK_IS_WINDOW (window)' failed
from /home/kagura1050/mikutter/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from mikutter/mikutter.rb:67:in `boot!'
from mikutter+/mikutter.rb:96:in `<main>'
のメッセージが出力されます
重くなる内容はTLのアイコン表示が極端に遅くなる(LOADING表示の時間が長い)感じです。
3.5.9では確認できませんでした。
ファイル
ぱっとみた感じこちらでは再現しませんでしたが、
TLが描画(更新?)されるとき
というのは、ツイートを受信するたびってことですよね
返信遅れてすみません
どうやらLTEテザリング/学内ネットの劣悪な環境がごくたまにこれを招いていたらしく、今はこちらでも再現しない感じです
家でも確認するべきでした。
うちの環境では(以前からずっと)出ています。環境はWSL上のUbuntu16.04で、rubyはrbenvで入れた2.4.2です。mikutterバージョンは(3.5.13が出た後の)masterブランチ・developブランチ両方です。
外部プラグインなしの状態でも出ます。
関係があるのかわかりませんが、Gtk-CRITICALも出ます。そちらはactivityプラグインがクラッシュする不具合 #1068 と関連しているのか、activity.rbの191行目でGtk-CRITICALが出る状態がしばらく続き、最終的にsegvで落ちます。落ちるまでは、UI上は一見問題なく動くのですが……
$ ruby ./mikutter.rb 2>&1 | tee log.txt
と似たような方法で(実際はオプション含めてシェルスクリプトにしてあるので……)採取したログを添付します。
必要であれば
--debug
オプションを付けて再度取ることもできると思います。クラッシュはほとんどの場合1日以内に再現できます。G[dt]k-CRITICAL自体は定常的に(数秒おきくらい?)ずっと出続けます。
情報のみですが
Gtk-CRITICAL **: gtk_box_pack: assertion 'child->parent == NULL' failed
この警告ですが、こちらの NetBSD/i386 7.1 + pkgsrc の mikutter 3.5.13 の環境では出ていません。
むりやり delayer-deferred 2.0.0 を使うパッチを当てていたりするので条件異なるかもしれませんが、
関係ありそうなものを適当に拾うと以下のような感じです。
- mikutter 3.5.13
- ruby-gnome2 3.1.9
- pluggaloid 1.1.1
- delayer 0.0.2
- delayer-deferred 2.0.0
- nokogiri 1.8.1
- glib 2.52.3
- gtk2+ 2.24.31
- gdk-pixbuf2 2.36.11
- cairo 1.14.10
cairo が 1.15 系だと絵文字云々で結構変わってたりしますかね。
cairo 1.15.8 が 2017-8-27 で mikutter 3.5.11 が 2017-09-03 なので何かあるのかも?
https://www.cairographics.org/news/
https://www.cairographics.org/news/cairo-1.15.8/
あとは、 3.5.11 で変わったのは
#1064 (mikutter 3.5.10へのバージョンアップ後、起動中にクラッシュする)
の対策としての起動時のプラグインの依存関係追加 69429b47 だけだと思うので、
プラグインの読み込み順序で何かが変わっているのかも?
Gdk-CRITICAL **: IA__gdk_pixbuf_get_from_drawable: assertion 'src_x + width <= src_width && src_y + height <= src_height' failed
こちらの警告はかなり前から出ています。
こちらの条件はある程度わかっていて、以下の条件で出ているように見えます。
- 引用・リプライのあるツイートを TLに描画する時、
当該ツイートの表示が TLのウインドウの一番下にあり、
リプライ元の表示の subparts を描画するときに
描画領域が mikutter のウインドウの範囲外になる時
手順として以下で再現できると思います。
- タイムラインをマウスホイールで下の方にスクロールする
- TL一番下に新たに現れたツイートが引用・リプライ付きのツイート、
かつツイート全体が mikutter のウインドウに入りきっていない場合に
Gdk-CRITICAL が出る
状況的に出てもやむなしなのかなと思っていましたが、意図しないメッセージであるならば別チケットを起こすべきかも。
情報ありがとうございます。
G[td]k-CRITICALのメッセージ本体を見ると、いくつかバリエーションがあるんですね。気づいていませんでした。
このチケットとは関係なさそうなので、改めて別チケットを起こすことにします。
- 関連している バグ #1274: エラーメッセージ Gdk-CRITICAL **: IA__gdk_pixbuf_get_from_drawable: assertion 'src_x + width <= src_width && src_y + height <= src_height' failed が大量に表示される を追加
他の形式にエクスポート: Atom
PDF