我们正在尝试在一些生成的代码中追踪一些堆栈粉碎错误。问题是堆栈粉碎错误不是 100% 确定性的,并且只发生在一台机器上而不是其他机器上。行为差异可能有哪些原因?
我们正在使用堆栈保护器标志运行 gcc。
我们正在尝试在一些生成的代码中追踪一些堆栈粉碎错误。问题是堆栈粉碎错误不是 100% 确定性的,并且只发生在一台机器上而不是其他机器上。行为差异可能有哪些原因?
我们正在使用堆栈保护器标志运行 gcc。
尝试使用Valgrind
如果涉及线程和时间,它可能会在罕见或不可预测的情况下发生。我已经看到多线程代码在 100 次中工作了 99 次......然后失败了。如果幸运的话,这只是一个堆栈覆盖错误,它一直在发生,但只是偶尔会产生后果。
-fstack-protector + valgrind ==> 堆栈数组溢出调试?
您可以尝试使用gcc
'-fstack-protector-all
选项启用堆栈金丝雀。