操作
バグ #466
完了読み込み中にTLを閉じると落ちる
プラグイン名:
ブランチ:
クラッシュする:
いいえ
説明
プロフィール画面を開いたときなど,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'
ファイル
toshi_a 初音 さんが12年以上前に更新
- ステータス を 新規 から レビュー待ち に変更
- 担当者 を Osamu Koga にセット
- 対象バージョン を 0.1.1 にセット
対応できたと思うので、確認お願いします。0.1.1にて対応してtrunkにマージ済です
Osamu Koga さんが12年以上前に更新
- ファイル mp_patch.diff mp_patch.diff を追加
- ステータス を レビュー待ち から まだダメ に変更
rev795で試しましたが,直ってないっぽいです.
(再現手順:検索などでTLに流れてきていない人を探す(キャッシュ回避のため)→その人のプロフィールを開く→即閉じる→会話やRT等で,キャッシュされてないアイコンを参照する必要があると落ちる)
手元でmp_modifierにパッチ当てたら直ったので添付します.
どうもスレッド実行順序の問題なのか,MiraclePainter#main_iconのコールバックが呼ばれてから,signal_emitでmp_modifierが呼ばれるまでdestroyed?がfalseになっていることがあるようです.
で,結果としてmp_modifierで既にdestroyされているmiracle_painter.treeを参照して死んでしまっているっぽいです.
操作