gpt4 book ai didi

c - 为什么地址 sanitizer 有时会忽略段错误?

转载 作者:行者123 更新时间:2023-12-05 07:17:18 26 4
gpt4 key购买 nike

一直在用fsanitize=address在编译 C 程序时,为了跟踪段错误大约一年了。我时不时地遇到一个奇怪的行为,如果编译没有我的程序会出现段错误 fsanitize=address但是当我用 fsanitize=address 编译时此段错误消失。我浏览了整个网络,但一直无法弄清楚为什么会发生这种情况。我知道 address sanitizer不是一个完美的程序,只是不知道它为什么会有这种行为。

最佳答案

AddressSanitizer 算法的一部分以 32 字节的间隔散布所有局部和全局变量(以及堆分配)以检测溢出。因此,用于破坏其他变量(如果这些变量是指针或偏移量可能导致崩溃)的逐一溢出可能不再这样做,相应的错误将消失。

Asan 仍应报告此类溢出的错误,而在您的情况下显然不会。这可能会发现 Asan 中的某些问题或(更有可能)您运行它的方式(例如,不将其与 -U_FORTIFY_SOURCE-fno-common 结合使用,如 FAQ 中所述)

关于c - 为什么地址 sanitizer 有时会忽略段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58866380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com