crash - (Apple Silicon) (M1) 莫名其妙的 SIGBUS 崩溃

标签 crash native apple-m1 apple-silicon sigbus

在我正在处理的一些 native M1 代码中,调用特定函数会引发毫无意义的 SIGBUS 错误:

Exception Type:        EXC_BAD_ACCESS (SIGBUS)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x0000000280dc7da0
Exception Codes:       0x0000000000000002, 0x0000000280dc7da0
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace SIGNAL, Code 10 Bus error: 10
Terminating Process:   exc handler [12171]

VM Region Info: 0x280dc7da0 is in 0x280d50000-0x280dd0000;  bytes after start: 490912  bytes before end: 33375
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      VM_ALLOCATE                 280cf0000-280d50000    [  384K] rw-/rwx SM=ZER  
--->  VM_ALLOCATE                 280d50000-280dd0000    [  512K] rwx/rwx SM=ZER  
      VM_ALLOCATE                 280dd0000-280e50000    [  512K] rw-/rwx SM=ZER  

根据此转储:

  • 故障地址与函数地址相同。
  • 函数地址 (0x280dc7da0) 已正确对齐。
  • 目标区域具有 rwx 保护,因此可执行。

什么可能会触发 SIGBUS?

顺便说一句,该程序的 Intel (x64) 版本在 x64 Mac 和 Rosetta 上运行良好。

最佳答案

这里的问题很可能是线程 JIT 写保护,该功能仅存在于 Apple Silicon 上,并且在传统内存页面权限之外运行。不幸的是,Apple 的故障转储似乎没有表明线程 JIT 写保护可能是 SIGBUS 触发器。

关于crash - (Apple Silicon) (M1) 莫名其妙的 SIGBUS 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73389982/

相关文章:

ios - malloc: *** 错误: 已释放对象的校验和不正确 - 对象可能在被释放后被修改

node.js - 带有包含 native 代码的外部模块的 Node-Webkit

android - Facebook 原生 Android 应用访问 token

reactjs - 无效的公式 :/usr/local/Homebrew/Library/Taps/facebook/homebrew-fb/buck. rb

android - 无法使用2种以上的布局

c++ - SizeOfImage 成员导致程序崩溃

ios - 在删除了 .xib 的设备上更新应用程序会使应用程序崩溃

java - 我在哪里可以找到 Java 库中 `native` 方法的源代码?

python - 无法在配备arm M1的Macbook上安装spaCy

苹果硅(arm64)上的 Android 模拟器只能使用 sudo 模式运行