プロジェクト

全般

プロフィール

バグ #466

完了

読み込み中にTLを閉じると落ちる

Osamu Koga さんが12年以上前に追加. 6年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:
いいえ

説明

プロフィール画面を開いたときなど,TLが読み込まれる時に画像が最後まで読み込まれるのを待たずに閉じると落ちるっぽい.
なぜかSystemExit扱いで死んでいるので,--debugで起動したらこんなん出ました.
rev792で確認.

/home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `get_property': destroyed GLib::Object
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
         from (eval):1:in `model'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
         from /home/osa/app/mikutter/trunk/core/mui/cairo_miracle_painter.rb:68:in `block in mp_modifier'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_extension.rb:21:in `call'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_extension.rb:21:in `block in safety_signal_connect'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `call'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `signal_emit'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
         from /home/osa/app/mikutter/trunk/core/mui/cairo_miracle_painter.rb:244:in `on_modify'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
         from /home/osa/app/mikutter/trunk/core/mui/cairo_miracle_painter.rb:350:in `block in main_icon'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:223:in `call'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:223:in `block (2 levels) in via_internet'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:37:in `call'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:37:in `run'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:63:in `block (2 levels) in run'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:59:in `each'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:59:in `block in run'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:55:in `times'
         from /home/osa/app/mikutter/trunk/core/delayer.rb:55:in `run'
         from mikutter.rb:37:in `block in <main>'
         from mikutter.rb:62:in `call'
         from mikutter.rb:62:in `main'
         from mikutter.rb:62:in `boot!'
         from mikutter.rb:80:in `<main>'
/home/osa/.gem/ruby/1.9.1/gems/glib2-1.1.3/lib/glib2.rb:33:in `exit': exit
         from /home/osa/.gem/ruby/1.9.1/gems/glib2-1.1.3/lib/glib2.rb:33:in `exit_application'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `signal_emit'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
         from /home/osa/app/mikutter/trunk/core/mui/cairo_miracle_painter.rb:244:in `on_modify'
         from /home/osa/app/mikutter/trunk/core/lib/uithreadonly.rb:22:in `block (2 levels) in singletonclass'
         from /home/osa/app/mikutter/trunk/core/mui/cairo_miracle_painter.rb:350:in `block in main_icon'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:223:in `call'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:223:in `block (2 levels) in via_internet'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:223:in `new'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:223:in `block in via_internet'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:117:in `call'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:117:in `block in get_raw_data_load_proc'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader_image_cache.rb:28:in `block in synchronize'
         from /usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader_image_cache.rb:27:in `synchronize'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:96:in `get_raw_data_load_proc'
         from /home/osa/app/mikutter/trunk/core/mui/gtk_web_image_loader.rb:86:in `block in get_raw_data'
         from /home/osa/app/mikutter/trunk/core/serialthread.rb:51:in `call'
         from /home/osa/app/mikutter/trunk/core/serialthread.rb:51:in `block in new_thread'
         from /home/osa/app/mikutter/trunk/core/lib/deferred/deferred.rb:71:in `call'
         from /home/osa/app/mikutter/trunk/core/lib/deferred/deferred.rb:71:in `block in initialize'
notice: mikutter.rb:68:in `rescue in boot!': SystemExit
error: {MIKUTTER_DIR}/core/serialthread.rb:58:in `rescue in block in new_thread': can't alloc thread
from {MIKUTTER_DIR}/core/serialthread.rb:48:in `new'
from {MIKUTTER_DIR}/core/serialthread.rb:48:in `new_thread'
from {MIKUTTER_DIR}/core/serialthread.rb:44:in `block in flush'
from /usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from {MIKUTTER_DIR}/core/serialthread.rb:39:in `flush'
from {MIKUTTER_DIR}/core/serialthread.rb:52:in `block in new_thread'
from {MIKUTTER_DIR}/core/lib/deferred/deferred.rb:71:in `call'
from {MIKUTTER_DIR}/core/lib/deferred/deferred.rb:71:in `block in initialize'
error: {MIKUTTER_DIR}/core/serialthread.rb:58:in `rescue in block in new_thread': can't alloc thread
from {MIKUTTER_DIR}/core/serialthread.rb:48:in `new'
from {MIKUTTER_DIR}/core/serialthread.rb:48:in `new_thread'
from {MIKUTTER_DIR}/core/serialthread.rb:44:in `block in flush'
from /usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from {MIKUTTER_DIR}/core/serialthread.rb:39:in `flush'
from {MIKUTTER_DIR}/core/serialthread.rb:52:in `block in new_thread'
from {MIKUTTER_DIR}/core/lib/deferred/deferred.rb:71:in `call'
from {MIKUTTER_DIR}/core/lib/deferred/deferred.rb:71:in `block in initialize'


ファイル

mp_patch.diff (843 Bytes) mp_patch.diff Osamu Koga, 2012-05-27 16:19

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

  • ステータス新規 から レビュー待ち に変更
  • 担当者Osamu Koga にセット
  • 対象バージョン0.1.1 にセット

対応できたと思うので、確認お願いします。0.1.1にて対応してtrunkにマージ済です

Osamu Koga さんが12年以上前に更新

rev795で試しましたが,直ってないっぽいです.
(再現手順:検索などでTLに流れてきていない人を探す(キャッシュ回避のため)→その人のプロフィールを開く→即閉じる→会話やRT等で,キャッシュされてないアイコンを参照する必要があると落ちる)
手元でmp_modifierにパッチ当てたら直ったので添付します.

どうもスレッド実行順序の問題なのか,MiraclePainter#main_iconのコールバックが呼ばれてから,signal_emitでmp_modifierが呼ばれるまでdestroyed?がfalseになっていることがあるようです.
で,結果としてmp_modifierで既にdestroyされているmiracle_painter.treeを参照して死んでしまっているっぽいです.

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

  • ステータスまだダメ から レビュー待ち に変更

r796 で0.1.1ブランチにパッチを適用しました。

Osamu Koga さんが12年以上前に更新

確認しました.

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

  • ステータスレビュー待ち から 終了 に変更

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