为什么经过地址清理的 C++ 库构建会在 libcxx 类 中产生不可重现的 ASAN 问题?

Why does an address sanitized build of a C++ library give non-reproducible ASAN issues in libcxx classes?

当使用 -fsanitize=address 构建时,我有时会看到 libc++ 的内存访问问题 类。

从 运行 到 运行 的错误似乎无法重复,有时根本不会发生。

这是怎么回事?我该如何防止这种情况?

"If libc++ containers cross from instrumented (rebuilt with ASan) to non-instrumented code, Address Sanitizer might report container overflow false positives."

如果您的程序正在链接使用 libc++ 构建的库而不使用 ASAN,那么您需要在构建时定义 _LIBCXX_HAS_NO_ASAN