You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git退出码138(SIGBUS信号中断)问题求助

解决Mac M1上Git Commit/Push时SIGBUS(退出码138)报错

问题背景

执行git commit或git push时触发退出码138(信号10:SIGBUS中断),场景为:

  • 设备:Mac M1(Silicon)
  • 项目存储在公司网络共享文件夹
  • 团队混合使用Mac M1和Windows系统

已尝试无效方案:

  • sudo sysctl -w kern.maxfilesperproc=524288
  • sudo sysctl -p
  • git config --global core.autocrlf true input

核心原因分析

SIGBUS信号本质是内存访问异常,结合你的场景,大概率和网络共享文件夹的文件系统兼容性、Git的ARM架构适配或共享目录的缓存/权限问题相关,Windows成员的系统对该问题影响较小,但跨系统共享的文件格式可能间接触发异常。

针对性解决方案

1. 替换为ARM原生Git版本

Mac M1的Rosetta转译x86版本Git可能在访问共享文件时出现内存异常:

  • 检查当前Git架构:
    lipo -info $(which git)
    
    若输出含x86_64,说明是转译版本
  • 安装ARM原生Git(确保Homebrew为ARM版本,路径/opt/homebrew/bin/brew):
    brew reinstall git
    
  • 验证:再次执行lipo -info $(which git),确认包含arm64

2. 迁移项目到本地磁盘操作

网络共享文件夹(如SMB)的文件系统在处理Git对象库(.git)的原子操作时存在兼容性问题:

  • 将项目克隆到本地磁盘(如~/Projects目录)
  • 日常在本地完成提交、推送,再同步到共享文件夹(可使用rsync或手动复制)

3. 重置Git配置并清理仓库缓存

修正错误配置并清理可能损坏的缓存:

  • 重置换行符配置:
    git config --global --unset core.autocrlf
    git config --global core.autocrlf input
    
  • 清理仓库对象和缓存:
    git gc --prune=now
    git fsck --full
    

4. 调整SMB共享挂载参数

若使用SMB共享,修改挂载参数提升兼容性:

  • 卸载现有共享目录:
    sudo umount /Volumes/[你的共享目录名]
    
  • 重新挂载并添加参数:
    sudo mount -t smbfs //[用户名]:[密码]@[服务器地址]/[共享名] /Volumes/[你的共享目录名] -o nobrowse,noatime
    
    注:密码可留空,挂载时会提示输入;替换括号内的实际信息

5. 排查系统层面问题

  • 关闭不必要的后台进程,降低内存占用(通过活动监视器查看内存使用率)
  • 修复磁盘权限:
    sudo diskutil repairPermissions /
    

内容的提问来源于stack exchange,提问作者Stella Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:20:47