プロジェクト

全般

プロフィール

致命的 #1064

mikutter 3.5.10へのバージョンアップ後、起動中にクラッシュする

Shibafu Midorino3ヶ月前に追加. 3ヶ月前に更新.

ステータス:
終了
優先度:
通常
対象バージョン:
開始日:
2017-08-26
期日:
進捗率:

0%

プラグイン名:

説明

mikutter 3.5.9から3.5.10へのバージョンアップを行い、アプリケーションを起動した際にクラッシュしてしまいました。

この現象については私以外にも、@tsutsuii氏や@dai_lxr氏が言及していることを確認しています。
https://twitter.com/dai_lxr/status/901390298437140480
https://twitter.com/tsutsuii/status/901391512864346113

以下は予想となりますが……
UserConfigのオブザーバー周りの仕様変更(#1061)に伴いPluginクラスへの依存が発生したものの
設定のバージョンアップ処理のタイミングではcore/plugin.rbがmiquireされていないためではないでしょうか。


バックトレース

/home/shibafu/git/mikutter/core/userconfig.rb:178:in `[]=': uninitialized constant UserConfig::Plugin (NameError)
from /home/shibafu/git/mikutter/core/userconfig.rb:216:in `setup'
from /home/shibafu/git/mikutter/core/userconfig.rb:251:in `<class:UserConfig>'
from /home/shibafu/git/mikutter/core/userconfig.rb:13:in `<top (required)>'
from /home/shibafu/git/mikutter/core/miquire.rb:98:in `require'
from /home/shibafu/git/mikutter/core/miquire.rb:98:in `miquire_original_require'
from /home/shibafu/git/mikutter/core/miquire.rb:95:in `file_or_directory_require'
from /home/shibafu/git/mikutter/core/miquire.rb:76:in `block in miquire'
from /home/shibafu/git/mikutter/core/miquire.rb:75:in `each'
from /home/shibafu/git/mikutter/core/miquire.rb:75:in `miquire'
from /home/shibafu/git/mikutter/core/miquire.rb:18:in `miquire'
from /home/shibafu/git/mikutter/core/service.rb:5:in `<top (required)>'
from /home/shibafu/git/mikutter/core/miquire.rb:98:in `require'
from /home/shibafu/git/mikutter/core/miquire.rb:98:in `miquire_original_require'
from /home/shibafu/git/mikutter/core/miquire.rb:95:in `file_or_directory_require'
from /home/shibafu/git/mikutter/core/miquire.rb:76:in `block in miquire'
from /home/shibafu/git/mikutter/core/miquire.rb:75:in `each'
from /home/shibafu/git/mikutter/core/miquire.rb:75:in `miquire'
from /home/shibafu/git/mikutter/core/miquire.rb:18:in `miquire'
from mikutter.rb:39:in `<main>'

関係しているリビジョン

リビジョン 69429b47 (差分)
toshi_a 初音3ヶ月前に追加

一部の環境でしか起動できなかった refs #1064

履歴

#1 Izumi Tsutsui3ヶ月前に更新

とりあえずで core/userconfig.rb の miquire を
miquire :core, 'configloader', 'plugin'
にすると起動します。

#2 dai lxr3ヶ月前に更新

Debianでも上記の修正で起動することを確認しました。

#3 Tajima Hidenari3ヶ月前に更新

Arch Linuxでも同様のエラーが出ましたが,ご指摘の方法で起動しました.

#4 toshi_a 初音3ヶ月前に更新

  • ステータス新規 から 進行中 に変更
  • 担当者toshi_a 初音 にセット

空のプロファイルを作って試したところ再現しました。
プロファイルが初めて作成される時には、ショートカットキーの設定などがUserConfig.#[]=を通して設定されるので、この時にイベントを発生させようとしてクラッシュします。

バックトレースは最後に起動されたバージョンを記録する処理でのクラッシュですが、ダウングレードは記録されない(過去に起動した最新のバージョンが記録される)ので、mikutter 3.6を一度も起動したことがないプロファイルでのみこのバグが発生するようです。

解決策としては #1064-1 の方法は確認しましたが、bootイベントが発生するより前に他のイベントが発生してしまう問題があります。初期化処理に問題が起こる可能性がありますが、相当古いサードパーティプラグインでもないとbootイベントを初期化に使っていないし、そういったプラグインが今回追加された userconfig_modify イベントをlistenしているはずもないので、今回はこの修正方法を採用して様子を見ます。

#5 toshi_a 初音3ヶ月前に更新

  • ステータス進行中 から レビュー待ち に変更
  • 担当者toshi_a 初音 から Shibafu Midorino に変更

ブランチ topic/1064-boot-dekihin に修正をpushしました。念の為そちらの環境でも大丈夫か確認お願いします

#6 Shibafu Midorino3ヶ月前に更新

  • ステータスレビュー待ち から 解決 に変更

遅くなってしまいましたが、当方環境においても 69429b4 にて正常に起動することを確認しました。

#7 toshi_a 初音3ヶ月前に更新

  • ステータス解決 から 終了 に変更

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