◆ location.hash 変更する機能を入れたらエラー画面が出るようになった
◆ リロードしたら拡張機能がクラッシュ
◆ 拡張機能の有効状態を変更したら Chrome 全体が落ちる
◆ locaton.hash 変更時のイベントで DOM 更新する部分をコメントアウトする起きない
◆ DOM 描画単体は特に問題の起きない処理

拡張機能を作ってたのですが なぜか Chrome がクラッシュします
拡張機能内のページを開くと開けませんでしたのエラー画面が出ます
そこでリロードすると拡張機能がクラッシュし 再度起動しようと拡張機能の ON/OFF スイッチに触れると Chrome 全体が落ちます
再起動して何度か試しても確実に発生します

原因を調べてみたのですが 関係なさそうなところ変更して直ったり 中途半端に直ったり(エラー画面は出るけどその後のリロードでクラッシュしなくなる)で結局はっきりした理由はわかりませんでした
単純にこの処理をしたらダメといういのではなく 偶然条件が重なっただけで内部的な処理の問題な気がします

発生したのは location.hash の変更を行うようにしてからです
もともとは単純なページを作っていて何も問題なかったのですが # 以降の文字列で最初からタブを選択した状態にしたくてこういうコードを追加したら発生するようになりました

if(!location.hash){
location.hash = "aaa"
}
load()

window.addEventListener("hashchange", load)

function load(){
const page = location.hash ? location.hash.replace("#", "page-") : "page-top"
render(page)
}

# がないならデフォルトの aaa を設定して load で今の # に応じたものを表示します
表示する部分はこれまで何も問題もなく storage や fetch など特別な処理もなく単純に DOM を作るだけの単純なものです
本来は storage の読み書きもありますが まだ作ってる途中だったのでそういう機能はなく本当に DOM を作るだけです
また これは拡張機能内に存在するページでオプション画面とも違い 直接 URL 入力で開く必要があるものです
拡張機能間で background などと通信する機能もないです

このページを #aaa などで読み込むと問題ないのですが # なしで読み込んで #aaa が設定される場合にエラーになります
エラーはコンソールに出るレベルではなく Chrome のエラー画面が表示されます
これだけでもおかしいのですが ここでリロードしたら拡張機能がクラッシュです(Chrome のクラッシュを拡張機能の再起動を試みるとおきます)

DOM 作成だけや #aaa を最初から開けば問題ないので locaton.hash の設定が影響してそうですが render 関数をコメントアウトして DOM 作成をしないようにすると問題は起きなくなりました
しかし DOM 作成単体でやると何も起きません

こういう location の処理は何度かやったことがありますが 拡張機能以外の普通のページだと何も起きたことがありません
拡張機能は通常のページよりも権限が強いし関係する部分が多いからか 通常ページではないような謎の理由でクラッシュすることは稀にあります
それでも大抵は 再起動すれば起きなくなります
再起動しても直らない上に Chrome 全体が落ちるのは初めてな気がします