ここまでのあらすじ:なにもしてないのに VS Code がこわれた。

先にまとめ

  • VS Code で WSL のプロジェクトを開こうとするとエラー
    • “VS Code Server for WSL closed unexpectedly”
  • WSL 側 VS Code Server バイナリーを削除で解決
    • rm -rf ~/.vscode-server/bin/
    • 自動的に再インストールされる

エラー

普段通りに VS Code を起動して履歴 Ctrl+R から WSL に置いてあるプロジェクトを開こうとしたところ、”VS Code Server for WSL closed unexpectedly” とエラーが表示されファイルを開くなどができなくなりました。(最後に開いてたのは表示された。Windows 側にキャッシュを置いてたのかな?)

エラーダイアログ。

"VS Code Server for WSL closed unexpectedly" と書かれたエラーダイアログ。Retry, Close remote, Ignore のボタン
情報が少ない

同時に Terminal ペインに表示されるログ。

[2021-09-25 06:54:35.262] Resolving wsl+ubuntu-20.04, resolveAttempt: 1
[2021-09-25 06:54:35.331] Starting VS Code Server inside WSL (Ubuntu-20.04)
[2021-09-25 06:54:35.331] Extension version: 0.58.2, Windows build: 19043. Multi distro support: available. WSL path support: enabled
[2021-09-25 06:54:35.331] No shell environment set or found for current distro.
[2021-09-25 06:54:35.489] Probing if server is already installed: C:\WINDOWS\System32\wsl.exe -d Ubuntu-20.04 -e sh -c "[ -d ~/.vscode-server/bin/7f6ab5485bbc008386c4386d08766667e155244e ] && printf found || ([ -f /etc/alpine-release ] && printf alpine-; uname -m)"
[2021-09-25 06:54:35.617] Probing result: found
[2021-09-25 06:54:35.617] Server install found in WSL
[2021-09-25 06:54:35.618] Launching C:\WINDOWS\System32\wsl.exe -d Ubuntu-20.04 sh -c '"$VSCODE_WSL_EXT_LOCATION/scripts/wslServer.sh" 7f6ab5485bbc008386c4386d08766667e155244e stable .vscode-server 0  '}
[2021-09-25 06:54:35.750] Setting up server environment: Looking for /home/ginpei/.vscode-server/server-env-setup. Not found.
[2021-09-25 06:54:35.750] WSL version: 4.19.104-microsoft-standard Ubuntu-20.04
[2021-09-25 06:54:35.750] WSL2-shell-PID: 31940
[2021-09-25 06:54:35.750] Starting server: /home/ginpei/.vscode-server/bin/7f6ab5485bbc008386c4386d08766667e155244e/server.sh  --port=0 --use-host-proxy --without-browser-env-var --disable-websocket-compression --print-ip-address --enable-remote-auto-shutdown   
[2021-09-25 06:54:35.752] VS Code Server for WSL closed unexpectedly.
[2021-09-25 06:54:35.752] For help with startup problems, go to
[2021-09-25 06:54:35.752] https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips
[2021-09-25 06:54:35.759] C:\WINDOWS\System32\wsl.exe -d Ubuntu-20.04 -e kill 31940
[2021-09-25 06:54:36.280] WSL Daemon exited with code 0

Unexpected だけあって異常終了に係る情報が少ない。

何かがおかしい?のを丸ごと削除

WSL 側ホームにある .vscode-server/ 削除で直ったという報告を見かけて試したところ、成功。試してみたところどうやら全部じゃなくてその中の bin/ だけ削除で解決でした。(bin/ の中のどれだったのかは不明。) bin/ の他に data/ と extensions/ があったけどそっちは残しておいて大丈夫。

$ rm -rf ~/.vscode-server/bin/

解決。

あとは普通に VS Code を起動すると普通に動きました。たぶん削除のとき VS Code は閉じておいた方が(バイナリーに触れてない状態にした方が)良い気がする、知らんけど。

削除した bin/ の内容が自動的に再構築されるけど VS Code の Remote が接続時に自動的にインストールしてくれるんだよね、これ。SSH 接続のときもなんか初回にサーバーインストール中みたいなポップアップが右下に出てたような気がする。

bin/ の状態

何がどうしてこうなったのかは皆目見当がつかないのですが、なんか bin/ 以下のファイルが全てファイルサイズ 0 の空ファイルになっていました。ええなんで。

$ ls -l ~/.vscode-server/bin/7f6ab5485bbc008386c4386d08766667e155244e/
total 16
-rw-r--r--  1 ginpei ginpei    0 Sep 25 06:54 LICENSE
drwxr-xr-x  3 ginpei ginpei 4096 Sep 25 06:54 bin
drwxr-xr-x 32 ginpei ginpei 4096 Sep 25 06:54 extensions
-rwxr-xr-x  1 ginpei ginpei    0 Sep 25 06:54 node
drwxr-xr-x 78 ginpei ginpei 4096 Sep 25 06:54 node_modules
drwxr-xr-x  3 ginpei ginpei 4096 Sep 25 06:54 out
-rw-r--r--  1 ginpei ginpei    0 Sep 25 06:54 package.json
-rw-r--r--  1 ginpei ginpei    0 Sep 25 06:54 product.json
-rwxr-xr-x  1 ginpei ginpei    0 Sep 25 06:54 server.sh

ls -R で見ても全部 0 みたい。

根本的な原因は不明だけど直接的な原因は見えました。

おすすめターミナル

ところで、何かにつけて言ってるけど Microsoft 謹製の Windows Terminal が使い勝手良くておすすめです。

おしまい

割とレアなエラーっぽくて Twitter でも言及が少ない。

なんで壊れたんだろうね。

参照