プロジェクト

全般

プロフィール

バグ #1378

完了

GdkPixbufのアサーションで落ちる

あひる 家鴨 さんが4年以上前に追加. 4年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
プラグイン名:
core/plugin/skin
クラッシュする:
はい

説明

Windows環境でmaster( 5747025b )のmikutterを起動したら下記エラーで落ちました。

GdkPixbuf-CRITICAL **: gdk_pixbuf_new_from_file_at_scale: assertion 'width > 0 || width == -1' failed

詳細なログは添付します。

起動時に source:core/plugin/skin/model/image.rb@5747025b#L35 が呼ばれた際に width もしくは height が 0 で呼ばれることにより、この後の処理のアサーションに失敗して落ちるといった挙動です。


ファイル

1378.txt (7.79 KB) 1378.txt クラッシュログ あひる 家鴨, 2019-09-07 12:18

再現手順

最新のmaster( 5747025b )をcloneして起動する(Windows環境で)

toshi_a 初音 さんが4年以上前に更新

  • ステータス分類待ち から 実装待ち に変更

ああ、クラッシュするのか。聞いたことがないです。

あひる 家鴨 さんが4年以上前に更新

pixbuf の呼び出し元の add_face_widget_ifn を確認したところ #1338 で対応の入った scale を通ると値が 0 になることがわかりました。
どうやら自分の環境では scale の中で呼ばれている Gdk::Visual.system.screen.resolution がデフォルト値の -1.0 (参考: GdkScreen resolution )を返すようで、その結果 val * Gdk::Visual.system.screen.resolution / 96 が -0.333333 となり to_i で 0 に丸められています。(当該箇所: source:/core/mui/gtk_extension.rb@5747025b#L340

下記対応をしてみようと思いますがいかがでしょうか。

resolution = Gdk::Visual.system.screen.resolution < 0 ? 96 : Gdk::Visual.system.screen.resolution
val * resolution / 96

あひる 家鴨 さんが4年以上前に更新

  • 担当者toshi_a 初音 にセット

toshi_a 初音 さんが4年以上前に更新

  • 担当者toshi_a 初音 から あひる 家鴨 に変更

良いと思います!

あひる 家鴨 さんが4年以上前に更新

  • ステータス実装待ち から レビュー待ち に変更
  • 担当者 を削除 (あひる 家鴨)
  • ブランチtopic/1378-fix-resolution にセット

ブランチ topic/1378-fix-resolution にコミットしました。
確認をお願いします。

toshi_a 初音 さんが4年以上前に更新

  • 対象バージョン3.10 から 3.9 に変更

Shibafu Midorino さんが4年以上前に更新

  • ステータスレビュー待ち から マージ待ち に変更

確認しました。

あひる 家鴨 さんが4年以上前に更新

  • ステータスマージ待ち から 終了 に変更

マージしました。

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