High Sierra 上出现“apply_selection_policy_once:更喜欢使用可移动 GPU”的原因

问题描述 投票:0回答:4

问题:

在我的用户群中安装的众多 macOS High Sierra 中,只有一名用户在使用我的应用程序 Isadora 时遇到以下错误:

apply_selection_policy_once: prefer use of removable GPUs (via com.troikatronix.isadora(preferences):GPUSelectionPolicy->preferRemovable)

这会在应用程序启动期间出现,并在第一次尝试创建共享 OpenGL 上下文时导致崩溃。

背景

这不是我的软件直接生成的消息。相反,我只能推断它是由 OpenGL 驱动程序或操作系统本身生成的。

此消息似乎引用了一个名为 GPUSelectionPolicy 的 plist 属性记录在此处,该属性与 eGPU 的使用有关。

生成此错误时,用户没有将 eGPU 连接到计算机,但他之前已经连接了 eGPU。他正在运行 NVIDIA 驱动程序管理器,但选择了“默认 macOS 图形驱动程序”

尝试修复

由于此属性未包含在我的应用程序的 plist 中,因此我的直接反应是添加它并将值设置为“avoidRemovable”,以强制操作系统完全避免 eGPU。这并没有解决问题。

消息中显示“com.troikatronix.isadora(preferences)”的部分似乎表明该消息来自 ~/Library/Preferences/com.troikatronix.isadora 的文件。

我已指示用户尝试这些修复

  1. 删除 ~/Library/Preferences/com.troikatronix.isadora 然后重新启动程序
  2. 创建一个新的用户帐户,重新启动计算机并登录,然后启动程序
  3. 在他的驱动程序或外部创建一个新的 High Sierra 分区,然后查看崩溃是否仍然存在

我正在等待他对这些测试的答复,但希望发布此错误,以防一些聪明的人立即提供答案。

(注意:在 Google 上搜索文本“apply_selection_policy_once”返回的结果恰好是一个,该结果没有讨论此消息。所以这似乎是相当罕见的事情。)

macos opengl
4个回答
1
投票

我在 Visual Studio Code 的嵌入式终端中获得了 CLI 输出

apply_selection_policy_once: prefer use of removable GPUs
,因为我在 Visual Studio Code 应用程序上启用了首选外部 GPU(在 Finder 中右键单击,然后获取信息)。显然,它将偏好向下传播到子进程。取消选中复选框解决了我的问题。


0
投票

我有类似的问题,但错误略有不同,这是

2019-07-28 00:50:09.962 Wireshark[13896:168862] apply_selection_policy_once: prefer use of removable GPUs (via org.wireshark.Wireshark:GPUSelectionPolicy->preferRemovable)

我和你的背景一模一样,只是我的 eGPU 是 Blackmagic eGPU:

    生成此错误时,
  • I 没有将 eGPU 连接到计算机,但 之前已连接 Blackmagic eGPU。

我尝试了你的建议,但问题仍然没有解决。

  • 完全卸载应用程序(wireshark)
  • 创建新用户帐户
  • 重新安装 macOS
  • 对硬盘进行分区并安装新的 macOS
  • NVRAM(启动时按command + option + P + R)

而且,我安装wireshark后,blackmagic eGPU就完全不能用了。换句话说,我插入 Blackmagic eGPU 后,电脑就会崩溃每次

希望我的情况可以提供更多信息。


0
投票

MacOS 会自动为每个使用该应用程序的应用程序创建一个首选项文件。需要删除该文件才能解决问题。

解决方法如下:

  1. 删除文件 ~/Library/Preferences/com.XXX.plist,其中 XXX 是应用程序包的捆绑标识符,可在应用程序包的 Info.plist 文件中找到。在我的例子中,XXX 是“troikatronix.isadora”,所以完整的文件名是

    ~/Library/Preferences/com.troikatronix.isadora.plist
    
  2. 重新启动电脑

  3. 重新启动应用程序

我已将“GPUSelectionPolicy”属性添加到 Info.plist 文件中,其值为“avoidRemovable”,希望将来能够防止出现此问题。

但是,需要注意的是,上述解决方案似乎适用于未在 Info.plist 文件中设置 GPUSelectionPolicy 属性的先前版本。

我仍然不清楚这个问题最初是如何产生的。如果您有关于如何发生这种情况的更多信息,请将其添加到评论中。


0
投票

简而言之,用户连接了外部 GPU,并在应用程序的“获取信息”对话框中选中了“首选外部 GPU”。分离了 eGPU,没有取消设置“获取信息”对话框中的首选项并运行您的应用程序。系统库尊重这一设置;导致您的代码崩溃(如果未连接 GPU)。

© www.soinside.com 2019 - 2024. All rights reserved.