【发布时间】:2022-01-23 21:21:37
【问题描述】:
在 -fsanitize=address 中使用 -fsanitize=address 在 FreeBSD 13(OpenSSL 1.1.1k-freebsd 2021 年 3 月 25 日)上启动 Openssl 时,我的软件卡住了clang11,clang9也会出现同样的问题。
这个问题隐隐约约地发生在:
- OpenSSL_add_all_algorithms();
- SSL_library_init()
- SSL_load_error_strings();
重现问题:
#include <openssl/ssl.h>
int main(int argc, char *argv[]) {
SSL_library_init();
return EXIT_SUCCESS;
}
然后编译执行:
clang -lssl -lcrypto -fsanitize=address -o test test.c && ./test
编译正常,但程序卡在 SSL_library_init() 使用 100% 的 CPU。一旦 -fsanitize=address 被删除,一切都会按预期工作。
【问题讨论】:
-
您遇到了这个错误:reviews.llvm.org/D84509 - ssl 正在调用 qsort,在使用地址清理程序运行时会损坏。我没有 search-fu 知道它什么时候得到修复。
-
这么长时间以来没有人意识到 LLVM9-LLVM11 和 SSL 存在问题吗?到目前为止,世界上没有人使用 sanitize 编译吗?我有那么幸运吗?
-
我可以确认问题也发生在 LLVM12 中。
-
@Petesh 您报告的错误似乎已于 2020 年 9 月 1 日修复(github.com/llvm/llvm-project/issues/46176)所以我不确定我们是否指向同一个错误。 LLVM12 于 2021 年 7 月 8 日发布,问题也发生在 LLVM12 上。另一方面,该行为与该错误中描述的完全一样。
标签: clang llvm freebsd sanitize