MENU
PIXIV FANBOXを開設しています詳しくはこちら!

Electronをビルドすると起動しない問題を解決する

Twitterにも書いたのですが、Electronをelectron-builderでビルドすると起動しない問題がたまーにあります。コマンドプロンプトからビルド前のElectronは動くのに、ビルドすると起動しない謎……

こんな風に起動はするけど描写前に転ける現象が発生して頭を悩ませてました

コマンドプロンプトからビルドしたexeファイルを起動すると、どうやらGPU processで落ちている様子。

なにがGoodbyeじゃ!!!
[16468:0807/190536.775:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.018:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.127:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.234:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.341:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.449:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.556:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.710:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.787:ERROR:gpu_process_host.cc(937)] GPU process launch failed: error_code=40
[16468:0807/190537.787:FATAL:gpu_data_manager_impl_private.cc(440)] GPU process isn't usable. Goodbye.
目次

解決方法

Electronのappモジュールでreadyイベントが発生する前に、コマンドラインスイッチでGPUのサンドボックスを無効化させれば良いそうです!

const { app } = require('electron')
// GPUのサンドボックスを無効化
app.commandLine.appendSwitch('disable-gpu-sandbox')
// 以下、諸々の処理を記載

実際、コードを入れるとビルドしても起動するし、コマンドプロンプトから叩いてもエラーなく立ち上がります!

これで長年の悩みからおさらば!

ただし、GPUのサンドボックスを無効化にしているのでセキュリティ的には問題がありそう……(全てのサンドボックスを無効化にするno-sandboxよりかはマシかな?

参考サイト

下2つが最初にたどり着いたサイト。GPUが原因ならコマンドラインスイッチ使えば良いのか!ってなりました。

コマンドラインスイッチの仕様はElectronの公式ドキュメントを読んで、理解してから使いました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

紅坂 柚月のアバター 紅坂 柚月 自称天才プログラマー

お酒が大好きなバ美肉VTuber。

お出掛けの時は和服を着てます。
プログラムは独学で遊んでます。

目次