问题:
在我的用户群中安装的众多 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 的文件。
我已指示用户尝试这些修复
我正在等待他对这些测试的答复,但希望发布此错误,以防一些聪明的人立即提供答案。
(注意:在 Google 上搜索文本“apply_selection_policy_once”返回的结果恰好是一个,该结果没有讨论此消息。所以这似乎是相当罕见的事情。)
我有类似的问题,但错误略有不同,这是
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:
我尝试了你的建议,但问题仍然没有解决。
而且,我安装wireshark后,blackmagic eGPU就完全不能用了。换句话说,我插入 Blackmagic eGPU 后,电脑就会崩溃每次
希望我的情况可以提供更多信息。
MacOS 会自动为每个使用该应用程序的应用程序创建一个首选项文件。需要删除该文件才能解决问题。
解决方法如下:
删除文件 ~/Library/Preferences/com.XXX.plist,其中 XXX 是应用程序包的捆绑标识符,可在应用程序包的 Info.plist 文件中找到。在我的例子中,XXX 是“troikatronix.isadora”,所以完整的文件名是
~/Library/Preferences/com.troikatronix.isadora.plist
重新启动电脑
我已将“GPUSelectionPolicy”属性添加到 Info.plist 文件中,其值为“avoidRemovable”,希望将来能够防止出现此问题。
但是,需要注意的是,上述解决方案似乎适用于未在 Info.plist 文件中设置 GPUSelectionPolicy 属性的先前版本。
我仍然不清楚这个问题最初是如何产生的。如果您有关于如何发生这种情况的更多信息,请将其添加到评论中。
简而言之,用户连接了外部 GPU,并在应用程序的“获取信息”对话框中选中了“首选外部 GPU”。分离了 eGPU,没有取消设置“获取信息”对话框中的首选项并运行您的应用程序。系统库尊重这一设置;导致您的代码崩溃(如果未连接 GPU)。