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

cc1plus触发internal compiler error: Segmentation fault问题排查咨询

cc1plus段错误问题咨询

编译时cc1plus崩溃并抛出错误:internal compiler error: Segmentation fault。主机内存充足,但仍出现该问题,重启系统后编译可正常通过,因此认为并非g++自身bug。

主机信息

$ gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          62137        3275       55193        1608        3668       56460
Swap:           975         401         574

$ dmesg
[55342.444777] cc1plus[22036]: segfault at 3f5a5cfa6e70 ip 0000000000df4cff sp 00007ffe92d48d60 error 4 in cc1plus[400000+180d000]
[55342.444789] Code: 18 85 f6 0f 88 c1 48 7b ff 83 fe 01 48 89 fb 0f 85 03 48 7b ff 48 85 ff 74 16 8b 57 04 85 d2 74 0f 48 8b 47 18 48 85 c0 74 06 <66> 83 38 03 74 0b 48 83 c4 18 48 89 d8 5b 5d c3 90 83 ea 01 48 63
[57864.997815] ThreadPoolForeg[33416]: segfault at 5549025e409e ip 000055fbf82d388c sp 00007fdd27be01b0 error 4 in code[55fbf6543000+70a6000]
[57864.997826] Code: 01 48 8b 5d b0 4c 89 ad a8 fe ff ff 4c 89 e8 0f b7 48 02 ff c9 66 89 48 02 0f b7 c9 48 c1 e1 04 48 8b 74 08 10 48 8b 44 08 18 <0f> b7 4e fe 66 83 f9 01 77 14 48 8d 4e f8 48 81 e1 00 00 fe ff 48
[57886.041612] traps: make[34363] general protection fault ip:55b6bc81e9b3 sp:7ffffd12f7f0 error:0 in make[55b6bc800000+34000]

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"

问题解答

1. g++是否存在限制内存使用的配置项?

  • g++本身没有直接限制内存使用的配置项,但可通过系统工具间接限制,比如ulimit命令。从你的内存数据看,可用内存充足,大概率不是这个原因。
  • 部分编译选项会影响内存占用,比如-O3优化级别比-O0消耗更多内存,但这是编译特性,不属于主动限制内存的配置。
  • 系统OOM Killer触发也会导致进程崩溃,但你的dmesg日志中没有相关记录,可以排除这种情况。

2. 如何调试g++的段错误问题?

  • 生成核心转储文件:执行ulimit -c unlimited开启核心转储,再次触发编译崩溃后,用gdb cc1plus core加载核心文件,输入bt命令查看调用栈,定位崩溃位置。
  • 启用g++调试日志:编译时添加-v选项查看cc1plus启动参数,或用-save-temps保存临时文件,缩小问题范围,尝试单独编译出错的源文件。
  • 排查环境干扰:由于重启后编译正常,怀疑是系统资源冲突或进程状态异常。可通过top/htop查看编译时系统负载,清理临时文件后重新编译,或使用单线程编译(make -j1)排除多线程竞争问题。
  • 升级g++版本:当前使用的gcc 7.5.0版本较旧,即便你认为不是g++自身bug,旧版本可能存在已修复的偶发性问题,升级到Ubuntu 18.04支持的gcc 8/9版本可验证是否解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:03:24