<div dir="ltr">Hi,<div><br></div><div>I have recently been trying to get ASan working on a large app building on Windows. However I'm running into linker errors which seem very strange to me. This is all working fine on macOS for the same codebase. I've broken it down to two minimal test cases showing the problem and I present them here to see if I can get some help on figuring out what's wrong.<div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"></div></div></div><div><br></div><div>First up, using clang-cl.exe:</div><div>C:\toolchain\LLVM9.0.1\bin\clang-cl.exe --version<br>clang version 9.0.1<br>Target: x86_64-pc-windows-msvc<br>Thread model: posix<br>InstalledDir: C:\toolchain\LLVM9.0.1\bin<br></div><div><br></div><div>Then this is the first test case:</div><div>> cat broken_asan.cpp<br>#include <regex><br>void foo() { std::regex pattern(R"(.*foo.*)"); }<br>int main(int argc, char** argv) {}<br></div><div><br></div><div>If I compile and link like this:</div><div>> C:\toolchain\LLVM9.0.1\bin\clang-cl.exe /c /MD -Xclang -fsanitize=address .\broken_asan.cpp /Fobroken_asan.obj<br>> C:\toolchain\LLVM9.0.1\bin\lld-link.exe broken_asan.obj /LIBPATH:C:\toolchain\LLVM9.0.1\lib\clang\9.0.1\lib\windows clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib<br></div><div><br></div><div>Then I get the following link error:</div><div>lld-link: error: undefined symbol: public: static class std::locale::id std::collate<char>::id<br>>>> referenced by broken_asan.obj:(__unnamed_1)<br></div><div><br></div><div>The second test case looks like this:</div><div>> cat broken_asan.cpp</div><div>struct Foo {<br>  static constexpr auto seq = std::integer_sequence<int>();<br>};<br>void bar() { (void)Foo::seq.size(); }<br>int main(int argc, char** argv) {}<br></div><div><br></div><div>And then with the same compile & link commands I get the following link error:</div><div>lld-link: error: undefined symbol: public: static struct std::integer_sequence<int> const Foo::seq<br>>>> referenced by broken_asan.obj:(__unnamed_1)<br></div><div><br></div><div>Both of these test cases will work absolutely fine without the "-Xclang -fsanitize=address" on the compile command.</div><div><br></div><div>I'm quite baffled. Does this look like user error on my part somehow, or is this a bug in ASan implementation on Windows?</div><div><br></div><div>Kind regards,</div><div>Matt Galloway</div></div>