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