首页 > 解决方案 > “GPU 进程不可用。再见。”

问题描述

我正在尝试使用 Electron 构建 Windows 和 Mac OS 应用程序,但遇到了障碍。

简而言之,如果我尝试在 Mac OS Big Sur 上直接使用 Electron 运行应用程序(而不是构建一个 Mac 应用程序然后运行它),我会返回以下错误:

[35941:0821/171720.038162:FATAL:gpu_data_manager_impl_private.cc(415)] GPU process isn't usable. Goodbye.

我在我的 : 中使用以下内容直接使用 Electron 运行package.json

"scripts": {
  ...
  "test": "electron main.js",
  ...
}

到目前为止,我唯一可以访问的 Mac OS 环境是 Big Sur,所以还没有在早期版本的 Mac OS 上尝试过这个,但是从谷歌搜索看来,这个错误可能与 Big Sur 收紧的安全/沙盒限制有关——但我猜关于那个。

无论如何,经过一些谷歌搜索后,一些建议表明尝试在没有应用程序沙箱的情况下运行,即将其添加到main.js

app.commandLine.appendSwitch('no-sandbox');

这一切都很好,很好并且有效。

但是,如果我想要构建和分发针对 Mac App Store 的签名 Mac 应用程序,或者只是一个签名的沙盒 DMG 或 PKG 安装程序,那么这将不合适。

如果我从中删除上述no-sandbox命令main.js并在我的权利中指定应用程序沙箱,plist如下所示,则生成的已签名应用程序将不会运行:

<key>com.apple.security.app-sandbox</key>
<true/>

该应用程序尝试打开并关闭。我可以尝试在命令行运行,open <appname>.app但这会在控制台中引发以下错误:

The application cannot be opened for an unexpected reason, error=Error Domain=NSOSStatusErrorDomain Code=-10826 "kLSNoLaunchPermissionErr: User doesn't have permission to launch the app (managed networks)" UserInfo={_LSFunction=_LSLaunchWithRunningboard, _LSLine=2561, NSUnderlyingError=0x7fd3c9c13db0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7fd3c9c158e0 {Error Domain=NSPOSIXErrorDomain Code=153 "Unknown error: 153" UserInfo={NSLocalizedDescription=Launchd job spawn failed with error: 153}}}}}

如果我在启用的情况下构建签名应用程序no-sandbox,该应用程序将在 Big Sur 上使用open <appname>.app.

我已经通过 Google、Stack Overflow 等尽我所能来诊断这个问题,但没有得到任何结果。希望 Stack Overflow 社区能够为我提供解决此问题的关键线索。

为了进一步了解,我创建了一个新的空 Electron 应用程序,并按照Electron 快速入门指南的部分描述了创建一个空的main.js,从技术上讲应该允许 Electron 应用程序启动 - 但它不会。BrowserWindow即使没有实例化 a或编写我自己的任何自定义代码,GPU 也会抛出上述相同的错误。

新更新:我将这些环境变量设置为 true,然后尝试使用以下命令运行应用程序npm start

结果是更详细的错误输出:

[48836:0823/165857.676747:ERROR:icu_util.cc(179)] icudtl.dat not found in bundle
[48836:0823/165857.676838:ERROR:icu_util.cc(243)] Invalid file descriptor to ICU data received.
[48778:0823/165857.677376:ERROR:gpu_process_host.cc(1003)] GPU process exited unexpectedly: exit_code=5
[48778:0823/165857.677430:WARNING:gpu_process_host.cc(1317)] The GPU process has crashed 1 time(s)
[48850:0823/165857.827224:ERROR:icu_util.cc(179)] icudtl.dat not found in bundle
[48848:0823/165857.827255:ERROR:icu_util.cc(179)] icudtl.dat not found in bundle
[48850:0823/165857.827341:ERROR:icu_util.cc(243)] Invalid file descriptor to ICU data received.
[48848:0823/165857.827358:ERROR:icu_util.cc(243)] Invalid file descriptor to ICU data received.
[48778:0823/165857.827836:ERROR:gpu_process_host.cc(1003)] GPU process exited unexpectedly: exit_code=5
[48778:0823/165857.827875:WARNING:gpu_process_host.cc(1317)] The GPU process has crashed 2 time(s)
... repeats until the GPU processes crashes 9 times ...
[48778:0823/165903.080134:FATAL:gpu_data_manager_impl_private.cc(415)] GPU process isn't usable. Goodbye.

还没有时间研究 ICU 指的是什么,但我想我会用这个信息更新。

另一个更新:所有这些都是在我的主要开发机器 Mac OS Big Sur 上完成的。在 Windows 10 机器上尝试,使用相同的 Electron 代码、依赖项等,一切正常。所以问题要么与 Mac OS Big Sur 有关,要么与我无法识别的开发机器上的特定本地问题有关。任何有关如何诊断此问题的建议将不胜感激。

更多更新:基于猜测,我在我的 Mac 上创建了一个新用户,将代码放入其中,并且运行良好。所以 - 这可能意味着我需要在我的个人资料中找到安装的东西,或者在我自己的个人资料/设置中找到一些破坏性的东西。与往常一样,任何建议都表示赞赏。

标签: macoselectronelectron-builder

解决方案


所以 - 部分答案。我想我已经找到了解决这个错误的方法:

GPU process isn't usable. Goodbye.

我的开发目录都在通过符号链接访问的文件系统上。一旦我将此应用程序的文件夹移动到我的主目录(不涉及符号链接),我就可以启动而npm start无需启用no-sandbox,也不会看到此错误或与icudtl.dat.

我尚未确定启动打包应用程序时与以下错误描述的问题是否相关/已解决:

The application cannot be opened for an unexpected reason, error=Error Domain=NSOSStatusErrorDomain Code=-10826 "kLSNoLaunchPermissionErr: User doesn't have permission to launch the app (managed networks)" UserInfo={_LSFunction=_LSLaunchWithRunningboard, _LSLine=2561, NSUnderlyingError=0x7fd3c9c13db0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7fd3c9c158e0 {Error Domain=NSPOSIXErrorDomain Code=153 "Unknown error: 153" UserInfo={NSLocalizedDescription=Launchd job spawn failed with error: 153}}}}}

也就是说,这是向前迈出的一大步。


推荐阅读