【发布时间】:2016-08-30 21:05:49
【问题描述】:
在 Ubuntu 14.04 早期,我使用编译代码(使用 gcc)并且过去没有出现此类错误。但是当我升级到 16.04 时,同样的代码给了我这个错误:
*** stack smashing detected ***: ./main terminated
Aborted (core dumped).
为什么会这样?当我在编译时使用-fno-stack-protector 时,错误消失了(也没有分段错误)。
【问题讨论】:
-
你不是刚回答了自己的问题吗?
-
在 14.04 早期,我不必使用 -fno-stack-protector。但现在我必须这样做。为什么? * 检测到堆栈粉碎 * 不是 16.04 升级附带的新功能。
-
我建议你真正阅读
-fno-stack-protector实际上做了什么。我建议你去学习如何在调试器中打开你的程序。 -
在 gcc 版本:4.4.6 20110731(Red Hat 4.4.6-3)中,没有检测到堆栈粉碎。但是当我使用 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 时,就出现了这个错误。我的问题是,我可以回到没有出现的 gcc 版本吗?
-
你为什么不修复你的代码而不是试图找到一个编译器选项来忽略错误?该错误很严重,不应忽略(除非您出于某种目的故意破坏内存)。
标签: c gcc segmentation-fault ubuntu-16.04