缓冲区溢出是唯一可能与程序堆栈相关的错误吗?

Is buffer overflow the only possible bug associated with program stack?

缓冲区溢出是唯一可能与 C/C++ 程序堆栈相关的错误吗? single/multi 线程化 C/C++ 程序中的程序堆栈中是否存在任何其他错误。

我正在阅读这篇关于并发错误的论文 (Learning from Mistakes — A Comprehensive Study on Real World Concurrency Bug Characteristics),并开始认为此类并发错误不会发生在堆栈中,因为它是线程私有的。

谢谢

您可能会尝试使用过多的堆栈,通常会导致分段错误(硬件报告程序已尝试访问未映射的内存或未针对尝试的访问类型进行映射,并且操作系统不通过更改内存映射来处理提供访问。

您可能会错误地使用指针或数组索引(不仅是缓冲区溢出,还有反方向的“下溢”或其他不正确的地址计算),破坏堆栈,这会以多种方式改变程序执行,导致将程序控制转移到不需要的位置或损坏数据并导致不需要的计算。