致命的 #1064
完了mikutter 3.5.10へのバージョンアップ後、起動中にクラッシュする
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>'
Izumi Tsutsui さんが約7年前に更新
とりあえずで core/userconfig.rb の miquire をmiquire :core, 'configloader', 'plugin'
にすると起動します。
toshi_a 初音 さんが約7年前に更新
- ステータス を 新規 から 実装待ち に変更
- 担当者 を toshi_a 初音 にセット
空のプロファイルを作って試したところ再現しました。
プロファイルが初めて作成される時には、ショートカットキーの設定などがUserConfig.#[]=を通して設定されるので、この時にイベントを発生させようとしてクラッシュします。
バックトレースは最後に起動されたバージョンを記録する処理でのクラッシュですが、ダウングレードは記録されない(過去に起動した最新のバージョンが記録される)ので、mikutter 3.6を一度も起動したことがないプロファイルでのみこのバグが発生するようです。
解決策としては #1064-1 の方法は確認しましたが、bootイベントが発生するより前に他のイベントが発生してしまう問題があります。初期化処理に問題が起こる可能性がありますが、相当古いサードパーティプラグインでもないとbootイベントを初期化に使っていないし、そういったプラグインが今回追加された userconfig_modify
イベントをlistenしているはずもないので、今回はこの修正方法を採用して様子を見ます。
toshi_a 初音 さんが約7年前に更新
- ステータス を 実装待ち から レビュー待ち に変更
- 担当者 を toshi_a 初音 から Shibafu Midorino に変更
ブランチ topic/1064-boot-dekihin に修正をpushしました。念の為そちらの環境でも大丈夫か確認お願いします
Shibafu Midorino さんが約7年前に更新
- ステータス を レビュー待ち から 解決 に変更
遅くなってしまいましたが、当方環境においても 69429b4 にて正常に起動することを確認しました。