一些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框架默认强制执行的即时崩溃行为,作为此更改的一部分。
你的问题"将其设置为全局环境变量"是安全的吗取决于您对";"安全";在这种情况下。
它是安全的,因为你的电脑不会起火。
它是不安全的,因为它可能会掩盖应用程序出错时会显示的崩溃信息,并可能允许分叉炸弹类型的进程使你的计算机崩溃。
因此,如果只有一个用例需要严格设置标志,那么最好将其设置本地化为该脚本/场景。