分割错误与gcc 7和gcc 10无关?

w46czmvw  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(137)

我试图用gcc 7编译代码,其中构建间歇性失败,问题:-

x86_64-pc-linux-gnu-g++: internal compiler error: Segmentation fault (program /home/comp/gcc-work/test/lib/ld-linux.so.2)
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.

我在互联网上看到一些gcc相关的论坛,因为使用旧的gcc版本可能会导致这种情况,升级到gcc 10可能会有所帮助。因此,我尝试将gcc版本从gcc 7升级到gcc 10。我多次启动构建,并注意到没有一个“分段故障”的构建失败示例。
我的疑问是:-如果现有的GCC(即gcc 7)工具链真的有问题,构建必须在所有运行中失败,对吗?为什么会有不一致的行为?
注意:- build不应始终在同一台计算机上运行。我们的基础结构应从池中随机选择计算机。我无法找到故障的确切根本原因,无论是硬件还是工具链。

xmd2e60i

xmd2e60i1#

如果现有的GCC(即gcc7)工具链确实存在问题,

  • 任何 * internal compiler error: * 总是 * 表示工具链 * 存在 * 问题--它 * 就在那里 * 告诉您。1

所有运行的构建都必须失败,对吗?为什么会有不一致的行为?
不对。有很多错误表现为间歇性的故障。
一些例子:

  • 释放后使用堆(程序可能崩溃,也可能不崩溃,具体取决于free d内存是否已被覆盖)
  • 使用未初始化的指针(程序可能会崩溃,也可能不会崩溃,这取决于未初始化的内存是否恰好为零)。

1我认为一些internal compiler error可能是由内存故障触发的,而不是编译器本身的bug,但这些故障应该仅限于单个主机。

相关问题