バグ #1067
未完了3.5.11にアップグレード後 Gdk-CRITICALが大量にコンソールに出力されて少し重くなる
説明
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では確認できませんでした。
ファイル
関連するチケット
toshi_a 初音 さんが約7年前に更新
ぱっとみた感じこちらでは再現しませんでしたが、
TLが描画(更新?)されるとき
というのは、ツイートを受信するたびってことですよね
kagura1050 てお さんが約7年前に更新
返信遅れてすみません
どうやらLTEテザリング/学内ネットの劣悪な環境がごくたまにこれを招いていたらしく、今はこちらでも再現しない感じです
家でも確認するべきでした。
cob odo さんが約7年前に更新
うちの環境では(以前からずっと)出ています。環境は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自体は定常的に(数秒おきくらい?)ずっと出続けます。Izumi Tsutsui さんが約7年前に更新
情報のみですが
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
- delayer-deferred 2.0.0 対応修正 http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/net/mikutter/patches/
- 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 が出る
- TL一番下に新たに現れたツイートが引用・リプライ付きのツイート、
状況的に出てもやむなしなのかなと思っていましたが、意図しないメッセージであるならば別チケットを起こすべきかも。
Izumi Tsutsui さんが6年以上前に更新
- 関連している バグ #1274: エラーメッセージ Gdk-CRITICAL **: IA__gdk_pixbuf_get_from_drawable: assertion 'src_x + width <= src_width && src_y + height <= src_height' failed が大量に表示される を追加