【发布时间】:2020-01-07 16:24:42
【问题描述】:
在 Linux 中,当正在运行的程序尝试使用超过限制的堆栈空间(堆栈溢出)时,通常会导致“分段错误”错误并中止执行。
是否保证超过堆栈空间限制总是会导致分段错误错误?或者程序是否会继续运行,可能由于数据已损坏而出现一些错误行为?
另一种说法:如果程序行为不端,产生错误的结果但没有崩溃,原因仍然是堆栈溢出吗?
编辑:澄清一下,这个问题不是关于“堆栈缓冲区溢出”,而是关于堆栈溢出,当程序使用的堆栈空间超过堆栈大小限制(Linux 中的限制由ulimit -s )。
【问题讨论】:
-
至少理论上 posix 说没有办法:
RLIMIT_STACK .... If this limit is exceeded, SIGSEGV shall be generated ...。但实践就是实践。
标签: linux segmentation-fault runtime-error stack-overflow