Mac上的Python:全局设置OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES安全吗



一些python进程崩溃时使用:

objc[51435]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

这些是使用子shell、分叉线程等的进程。MacOS出于一些安全原因阻止了它们(我不确定是什么,但人们是这么说的(

解决方案是禁用此安全检查:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

这对于已知的库和依赖项以及当前运行的shell来说都很好。

将其设置为全局环境变量,在我的本地mac机器中全局禁用此检查,安全吗?

苹果改变了fork()在High Sierra的行为方式(>=10.13(。

如果启用,OBJC_DISABLE_INITIALIZE_FORK_SAFETY变量将关闭其更新的ObjectiveC框架默认强制执行的即时崩溃行为,作为此更改的一部分。

你的问题"将其设置为全局环境变量"是安全的吗取决于您对";"安全";在这种情况下。

它是安全的,因为你的电脑不会起火。

它是不安全的,因为它可能会掩盖应用程序出错时会显示的崩溃信息,并可能允许分叉炸弹类型的进程使你的计算机崩溃。

因此,如果只有一个用例需要严格设置标志,那么最好将其设置本地化为该脚本/场景。

相关内容

  • 没有找到相关文章

最新更新