首页/云/Docker 容器速查/退出码 139:段错误 SIGSEGV
容器排障52 条

退出码 139:段错误 SIGSEGV

139 = 128+11,进程收到 SIGSEGV:多为应用自身缺陷、JIT/native 库与平台不匹配、或内存越界;排查从崩溃栈与 dmesg 入手。

Docker 容器速查云更新于 2026-10-13

退出码 139 的含义

退出码 139 等于 128 加 11,表示进程收到了段错误信号:多为应用自身缺陷、本地库与平台不匹配,或内存越界。排查从崩溃日志、宿主内核记录与转储文件入手。

基本信息

含义128 加 11,即段错误信号
常见原因本地扩展崩溃、二进制与平台不符、内存越界
线索来源应用崩溃日志、内核记录、转储文件
排查顺序先看应用侧日志,再看内核侧记录
环境因素更换基础镜像后依赖库版本变化

典型使用场景

  • 应用运行中突然崩溃且没有明显报错
  • 升级基础镜像后出现崩溃,怀疑依赖库不匹配
  • 内存受限下越界访问表现为崩溃而非内存不足
  • 需要生成转储文件交给开发方分析
  • 排查原生扩展类依赖的稳定性问题

采集现场

采集现场
docker logs --tail 100 web                                  # 应用侧崩溃日志
docker run --rm --ulimit core=-1 --name seg app/native:1.0   # 允许生成转储
dmesg | grep -i segfault | tail -5                           # 宿主内核侧记录
# 拿到转储后交给应用开发方用调试器做栈回溯

线索与排查方向

线索可能原因排查方向
启动即崩溃二进制或库不匹配核对基础镜像与架构
运行一段时间后崩溃内存越界或并发缺陷抓转储做栈回溯
仅特定输入崩溃应用逻辑缺陷最小化复现条件
宿主内核有记录进程收到段错误信号结合应用日志定位
开启转储前先评估磁盘占用,拿到文件后交给开发方用调试器分析。
升级基础镜像后本地依赖不匹配会突然崩溃,回退镜像能快速验证这一假设。
在内存受限的情况下越界写也可能表现为这种崩溃而不是内存不足,两个方向都要看。
先在容器内确认崩溃能否复现,再看宿主内核记录,顺序清晰能少走弯路。
崩溃前最后的应用日志往往停在最后一步操作上,结合时间线能快速缩小范围。
把最小复现条件与崩溃日志一起留存,是交给开发方时最有用的两组材料。

易错点

  • 升级基础镜像后本地依赖不匹配会突然崩溃,回退镜像可快速验证
  • 内存受限下的越界写也可能表现为这类崩溃,不要只往内存不足方向查
  • 不开转储就反复重启容器,缺少现场证据难以定位根因
  • 只看容器日志不看宿主内核记录,会漏掉关键线索

数据来源与参考

  • Docker 官方文档:docker run --ulimit 与容器信号语义(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌