【发布时间】:2021-09-17 05:19:08
【问题描述】:
我将系统调用检查器与-fsanitize=address 结合使用,当ASAN 发现错误时,它会在打印报告时调用一些系统调用(ioctl(ISATTY) 等)。系统调用检查器中断 ASAN 的 ioctl,错误报告没有被正确收集。
我希望 ASAN 在不打印报告或失败的情况下简单地中止,这是一种确定(可能使用 libasan4 API 调用)ASAN 发现错误的方法,因此我可以阻止系统调用检查器拦截系统调用.
不幸的是,来自 libasan4 的 __asan_error_report、__sanitizer_set_death_callback 和 __asan_set_error_report_callback 都在 ASAN 收集报告后加入:
0 __asan_error_report()
1 syscall_checker()
2 ioctl(ISATTY)
3 asan::PrintReport()
4 app_code_that_crashes()
并且系统调用检查器无法正确处理 ASAN 的 ioctl() 调用,因此它正常退出(),而我希望保持 ASAN 的 abort()ing 行为。
【问题讨论】:
标签: gcc llvm sanitizer address-sanitizer