WSL2上でcodeコマンドを使ってVSCodeを開こうとしたらハングしてしまった。WSL2の再起動や高速スタートアップを無効にしてもWindowsの再起動をしても治らないし、codeコマンドだけではなくexplorer.exeもハングしてしまう。
調査していると、Windows上のパス(/mnt/c/)だと問題なく動作することがわかった。そこで、code も explorer.exe も内部で利用しているであろう wslpath がおかしいのではないかと思い、wslpath -m を実行してみると以下のようになった。
$ wslpath -m / //wsl.localhost/Ubuntu/ $ wslpath -m /mnt/c C:/
WSL2上のパス(/など)だと//wsl.localhost/Ubuntu/のようになっていてなにかおかしい。WSL2上のパスは//wsl$/<ディストリビューション名>のはずである。さらに調査していると、どうやら、Build 21354 で //wsl$/<ディストリビューション名> から //wsl.localhost/<ディストリビューション名>/ に変更になり、今後はこちらが使われるらしい(現状は//wsl$/<ディストリビューション名>でも開ける)。
しかし、//wsl.localhost/Ubuntu でアクセスしてもハングしてしまいアクセスできない。このことから不具合の原因は wslpath でもなく //wsl.localhost/Ubuntu でアクセスできないことによるらしいことがわかった。また、ほかのディストリビューションでは問題なくアクセスできるのでWSL2自体に問題はなく、自分が使用している Ubuntu ディストリビューションが壊れているらしいことがわかった。
具体的にどこがおかしいか調査をしたかったが、いまいちわからなかったので Ubuntu をクリーンインストールしたところ治った。
なお、環境は以下のとおりである。
- OS: Windows 11 Pro
- バージョン: 21H2
- ビルド番号: 22000.466
- WSL:
- WSLバージョン: 0.51.2.0
- カーネル バージョン: 5.10.81.1
- WSLgバージョン: 1.0.30
- Linuxディストリビューション: Ubuntu 20.04.3 LTS
- WSLバージョン: 2