当前位置: 首页 > 知识库问答 >
问题:

“GPU 进程不可用。再见。

孙洋
2023-03-14

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

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

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

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

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

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

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

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

这一切都很好,很有效。

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

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

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

应用程序尝试打开,然后关闭。我可以尝试在命令行中打开<code>运行

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}}}}}

如果我在启用< code >无沙盒的情况下构建一个签名应用程序,该应用程序将使用< code>open在Big Sur上正常运行

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

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

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

  • ELECTRON_ENABLE_LOGGING
  • ELECTRON_DEBUG_NOTIFICATIONS
  • ELECTRON_ENABLE_STACK_DUMPING

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

[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机器上尝试,使用相同的电子代码、依赖关系等,一切都很好。所以这个问题要么与Mac OS Big Sur有关,要么是我的开发机器上的一个我无法识别的特定本地问题。任何关于如何诊断的建议将不胜感激。

还有一个更新:根据猜测,我在我的苹果电脑上创建了一个新用户,把代码放在那里,它运行得很好。所以——这可能意味着我需要在我的个人资料中找到一些安装的东西,或者在我自己的个人资料/设置中发现一些损坏的东西。一如既往,任何建议都很感谢。

共有3个答案

汪玮
2023-03-14

潜在的问题似乎是Mac OS沙盒正在阻止GPU进程正常生成。

打包应用程序时,您可以指定各种授权,但并非所有授权都是同等创建的,尤其是希望访问钥匙串、secure enclave和TouchID的授权。

如果您指定的是配置文件-请确保所有这些权限都只在原始文件中,请将继承的权限保持为空或最小化。在我的案例中,我在继承的权利中指定了密钥链访问组,这是一个痛苦的教训。删除它使生成不会崩溃!

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

轩辕啸
2023-03-14

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

GPU process isn't usable. Goodbye.

我的开发目录都在通过符号链接访问的文件系统上。一旦我将此应用程序的文件夹移动到我的主目录(不涉及符号链接),我就可以使用npm start启动,而无需启用no-沙盒,也无需看到此错误或与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}}}}}

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

林博厚
2023-03-14

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

app.commandLine.appendSwitch('in-process-gpu');

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

是的,整个硬化的运行时是如此糟糕、糟糕!现在来计算下一次碰撞!

 类似资料:
  • 问题内容: 我正在尝试运行以前运行的应用程序。它曾经在Ubuntu和Windows 7上运行。我现在有一台Windows 10计算机,代码失败。可能是因为我现在使用的是python 3.5,尽管坦率地说我不记得我在其他计算机上(不再可用)上的内容。 关键行是: 不久前已从各个地方取消。但是,现在当我运行它时,它会引发错误: 在交互式会话中,似乎是第三行失败了: 我试过了 在命令提示符下,但错误仍然

  • 我目前正在尝试训练一个聊天机器人,更具体地说是这个。但是,当我开始训练聊天机器人时,它使用了我100%的CPU和大约10%的GPU。有人知道为什么吗。 我已经安装了,并确保我有正确的CUDA和cuDNN版本。我还确保我没有安装基本的pip包。我的GPU也有最新的英伟达驱动程序。我也尝试过卸载和重新安装我所有的驱动程序,CUDA,cuDNN,tensorflow gpu和它所有的依赖和python本

  • 其实前面是谈过一次 daemon 进程的,但是并涉及过多原理,但是并不影响使用。今天打算说说关于 daemon 进程更多的二三事,本质上说,如果你仅仅是简单实现利用一下 daemon 进程,这个不看也是可以的。 杠真,*NIX 真是波大精深,越是深入看越是发现它的 diao。原理往往都是枯燥的,大家都不爱看,但这并不影响我坚持写自己对这些东西的理解。 三个概念 进程组 一坨相关的进程可以组成一个进

  • 我正在尝试创建和训练一个CNN模型。但每次我运行代码时,tensorflow并没有使用GPU,而是使用CPU。我已经安装了tensorflow的最新版本。附上以下详细信息。 在运行时,我得到以下带有警告消息的输出。(平台:VS代码) 2021-07-28 15:35:13.163991: W tenstorflow/core/common_runtime/bfc_allocator.cc:337]

  • 问题内容: 是否可以用Java进行GPU编程?我的意思是不使用本机库。 当我们切换到GPU时,可以期待多少性能提升? 编辑: 我不是在看游戏编程,而是想做硬核数字运算。 问题答案: 是。 Java3D,LWJGL和JOGL支持GLSL(OpenGL阴影语言)。 编辑: 如果要在GPU上进行与平台无关的通用计算,则可以使用OpenCL。尽管功能集和执行环境千差万别,但该框架使您可以编写将所有处理单元

  • 那我错过了什么?这是暂时的问题吗?或者beans模式已经转移到其他地方了?