ujimushi(@旧sradjp(15364))の日記

旧スラドの日記の引越先です

CPU内蔵グラフィック,ubuntu 22.04-3上でdeb版VSCode 1.86.2起動時にエラーが発生→起動オプション書き換えで対策

会社で使っているPCはグラフィックがCPU内蔵なので,使っているUbuntu(22.04 r3)はGPU周りのエラーがよく出る。 通常はEmacsを使っているが,たまに比較用とかで使うdebパッケージでインストールしたVSCode (1.86.2)で突然エラーが出た。 多分アップデートしたタイミングだ。

GUIのショートカットからではすぐに画面が消えるので,コマンドラインから確認してみる。

$ code --verbose
少し略
[main 2024-02-19T05:24:03.184Z] Starting VS Code
[main 2024-02-19T05:24:03.184Z] from: /usr/share/code/resources/app
...
中略
...
[main 2024-02-19T05:24:03.233Z] lifecycle (main): phase changed (value: 3)
[main 2024-02-19T05:24:03.233Z] resolveShellEnv(): skipped (VSCODE_CLI is set)
[main 2024-02-19T05:24:03.233Z] update#setState idle
[121960:0219/142403.287436:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142403.287447:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 1 time(s)
[121960:0219/142403.480478:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142403.480490:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 2 time(s)
[121960:0219/142403.657645:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142403.657657:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 3 time(s)
[121960:0219/142403.792050:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142403.792063:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 4 time(s)
[121960:0219/142403.925697:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142403.925709:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 5 time(s)
[121960:0219/142404.060553:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142404.060565:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 6 time(s)
[main 2024-02-19T05:24:04.074Z] resolveShellEnv(): skipped (VSCODE_CLI is set)
[121960:0219/142404.153426:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142404.153439:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 7 time(s)
[121960:0219/142404.245336:ERROR:gpu_process_host.cc(995)] GPU process exited unexpectedly: exit_code=133
[121960:0219/142404.245348:WARNING:gpu_process_host.cc(1364)] The GPU process has crashed 8 time(s)
...
以下略

のようにGPUエラーが出まくっている。

--disable-gpuオプションも効かずどうしようかと思っていたが, issue を見ると,--disable-accelerated-video-decodeが効くらしい。

とりあえずはGUIのショートカットから利用できればいいので,暫定の対策は

cp /usr/share/applications/code.desktop ~/.local/share/applications/

のように,OSのVSCodeのデスクトップファイルを個人用のフォルダにコピーして から,~/.local/share/applications/code.desktopを次のように書き換える。 といってもExecがある行に--disable-accelerated-video-decodeを起動オプションに追加するだけなので単純だ。

なお,jsonの設定ファイルでの書き換えは今のところ効かないようだ。

[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --unity-launch --disable-accelerated-video-decode %F
Icon=vscode
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;application/x-code-workspace;
Actions=new-empty-window;
Keywords=vscode;

[Desktop Action new-empty-window]
Name=New Empty Window
Name[de]=Neues leeres Fenster
Name[es]=Nueva ventana vacía
Name[fr]=Nouvelle fenêtre vide
Name[it]=Nuova finestra vuota
Name[ja]=新しい空のウィンドウ
Name[ko]=새 빈 창
Name[ru]=Новое пустое окно
Name[zh_CN]=新建空窗口
Name[zh_TW]=開新空視窗
Exec=/usr/share/code/code --new-window --disable-accelerated-video-decode %F
Icon=vscode

code --verbose --disable-accelerated-video-decode の出力メッセージを確認すると,--disable-accelerated-video-decodeVSCodeは知らない オプションなのでスルーされるが,Electron/CHromiumでは有効なオプションなので, そちら側で読み込んでうまく動いているらしい。

Warning: 'disable-accelerated-video-decode' is not in the list of known options, but still passed to Electron/Chromium.

本来CPU内蔵グラフィックは枯れたハードなので,あまりエラーは発生しないはずなんだけど, 今のPCはGPUありの方が普通(パフォーマンス的に楽)なので,何故かエラーが発生しやすい印象。

2024/2/20追記

ubuntuのバージョンを確認したところ,いつの間にか22.04.4でした…