首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"GPU进程不可用,再见。“

"GPU进程不可用,再见。“
EN

Stack Overflow用户
提问于 2021-08-21 16:40:59
回答 4查看 14K关注 0票数 16

我正在尝试使用电子软件构建Windows和Mac应用程序,但遇到了困难。

简而言之,如果我试图在Mac上使用电子直接运行应用程序(而不是构建一个Mac应用程序,然后运行该应用程序),我会得到以下错误:

代码语言:javascript
运行
复制
[35941:0821/171720.038162:FATAL:gpu_data_manager_impl_private.cc(415)] GPU process isn't usable. Goodbye.

我正在使用package.json中的以下内容直接使用电子运行

代码语言:javascript
运行
复制
"scripts": {
  ...
  "test": "electron main.js",
  ...
}

到目前为止,我唯一可以访问的Mac环境是Big Sur,所以还没有在早期版本的Mac OS上尝试过这个,但是从谷歌上看,这个错误似乎与Big Sur的安全/沙箱限制收紧有关--但我对此有猜测。

无论如何,在搜索了一些建议之后,有几个建议表示试图在没有应用程序沙箱的情况下运行,即将其添加到main.js中。

代码语言:javascript
运行
复制
app.commandLine.appendSwitch('no-sandbox');

这一切都是好的,好的,有效的。

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

如果我从no-sandbox中删除了上面的main.js命令,并在run中指定了应用程序沙箱( plist ),如下所示,得到签名的应用程序将不会运行:

代码语言:javascript
运行
复制
<key>com.apple.security.app-sandbox</key>
<true/>

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

代码语言:javascript
运行
复制
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上使用open <appname>.app运行得很好。

我已经尽我最大的努力通过谷歌,堆栈溢出等诊断,但没有得到任何进展。希望Stack溢出社区能为我提供解决这个问题的关键线索。

对于进一步的上下文,我创建了一个新的、空的电子应用程序,并按照电子快速启动指南描述了创建一个空的main.js (从技术上讲,它应该允许电子应用程序启动) --但它不会启动。同样的错误描述是,即使没有实例化BrowserWindow或编写自己的自定义代码,也会抛出GPU。

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

  • ELECTRON_ENABLE_LOGGING
  • ELECTRON_DEBUG_NOTIFICATIONS
  • ELECTRON_ENABLE_STACK_DUMPING

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

代码语言:javascript
运行
复制
[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所指的研究,但是我想我会用这个信息来更新。

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

还有一个更新:根据猜测,我在我的mac上创建了一个新用户,并将代码放入其中,它运行得非常完美。所以--这可能意味着我需要在我的配置文件中找到安装的东西,或者在我自己的配置文件/设置中发现一些损坏的东西。和往常一样,任何建议都很感激。

EN

回答 4

Stack Overflow用户

发布于 2022-01-24 20:58:09

在我的例子中,我使用命令行开关--进程内gpu,或者:

代码语言:javascript
运行
复制
app.commandLine.appendSwitch('in-process-gpu');

这里还有一个广泛的铬开关列表,您可以尝试:https://peter.sh/experiments/chromium-command-line-switches/

是的,整个硬运行时的事情是如此可怕,可怕的混乱!现在找出下一次坠机的原因!

票数 11
EN

Stack Overflow用户

发布于 2021-08-24 11:23:38

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

代码语言:javascript
运行
复制
GPU process isn't usable. Goodbye.

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

在启动打包应用程序时,我还没有确定以下错误描述的问题是否相关/解决:

代码语言:javascript
运行
复制
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}}}}}

尽管如此,这是向前迈出的一大步。

票数 3
EN

Stack Overflow用户

发布于 2021-12-04 02:02:32

根本的问题似乎是Mac沙箱阻止了GPU进程的正常生成。

您可以在打包应用程序时指定各种权限,但并非所有权限都是平等创建的,特别是希望访问密钥链、安全enclave和TouchID的权限。

如果您指定的是一个provisioning profile --确保所有这些权利都在原始文件中,请将继承的权利保持为空或最小值。在我的例子中,我在继承的权利中指定了keychain-access-groups,这是一个痛苦的教训。移除它使构建没有崩溃!

我相信在您的情况下,您可能尝试访问应用程序本身之外的文件,这可能导致沙箱阻止打开GPU进程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68874940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档