SEGV_ACCERR是什么意思?

我正在研究一些碰撞信号为SIGSEGV的SEGV_ACCERR。 在搜索SEGV_ACCERR之后,我发现的最接近人类可读解释的是: 对象的无效权限

这在更一般意义上意味着什么? 何时出现SEGV_ACCERR? 关于这个原因有更具体的文件吗?

这是我在64位iOS设备上看到的错误,如果多个线程读取并更改ARC下的变量,则会发生这种错误。 例如,我今天修复了一个崩溃,其中多个后台线程正在读取并使用静态NSDate和NSString变量并更新它们而不进行任何类型的锁定或排队。

在多个线程上使用核心数据对象也会导致此崩溃,正如我在崩溃日志中多次看到的那样。

我也使用Crittercism,这个特殊的崩溃是一个只影响64位设备的SEGV_ACCERR。

在代码尝试从“text”以外的地方执行的情况下,我已经看到过这种情况。

例如,如果您的指针指向堆或堆栈中的函数,并且您尝试执行该代码(来自堆或堆栈),则CPU会抛出此exception。