[llvm-bugs] [Bug 35343] New: [ASan/Win] lld-link doesn't link ASAN binaries
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Nov 17 06:12:14 PST 2017
https://bugs.llvm.org/show_bug.cgi?id=35343
Bug ID: 35343
Summary: [ASan/Win] lld-link doesn't link ASAN binaries
Product: compiler-rt
Version: 5.0
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P
Component: compiler-rt
Assignee: unassignedbugs at nondot.org
Reporter: steinar+llvm at gunderson.no
CC: llvm-bugs at lists.llvm.org
Hi,
I'm trying to run MySQL with ASAN on Windows (we're already clean on Linux).
However, seemingly linking with LLD isn't automatic:
R:\ade\sesse\mysql\obj\mysql-test>"c:\Program Files\LLVM\msbuild-bin\cl.exe"
/nologo /c hello.cpp -fsanitize=address
R:\ade\sesse\mysql\obj\mysql-test>"c:\Program Files\LLVM\bin\lld-link.exe"
/out:hello.exe hello.obj
c:\Program Files\LLVM\bin\lld-link.exe: warning: hello.obj: undefined symbol:
__asan_shadow_memory_dynamic_address
c:\Program Files\LLVM\bin\lld-link.exe: warning: hello.obj: undefined symbol:
__asan_option_detect_stack_use_after_return
c:\Program Files\LLVM\bin\lld-link.exe: warning: hello.obj: undefined symbol:
__asan_stack_malloc_0
c:\Program Files\LLVM\bin\lld-link.exe: warning: hello.obj: undefined symbol:
__asan_report_load8
c:\Program Files\LLVM\bin\lld-link.exe: warning: hello.obj: undefined symbol:
__asan_init
c:\Program Files\LLVM\bin\lld-link.exe: warning: hello.obj: undefined symbol:
__asan_version_mismatch_check_v8
error: link failed
I can link in clang_rt.asan-x86_64.lib manually by giving the path, and then
simple tests work, but anything that tries to do LoadLibrary dies, so I suppose
this is the wrong approach:
==18756==AddressSanitizer CHECK failed:
C:\src\llvm_package_500\llvm\projects\compiler-rt\lib\asan\asan_win.cc:179
"((::
__interception::OverrideFunction("RtlRaiseException",
(uptr)__asan_wrap_RtlRaiseException, (uptr *)&__interception::real
_RtlRaiseException))) != (0)" (0x0, 0x0)
#0 0x7ffe458b8fcf in _asan_init+0x16f
(R:\ade\sesse\mysql\obj\plugin_output_directory\keyring_udf.dll+0x180cb8fcf)
#1 0x7ffe458c326b in __sanitizer::CheckFailed+0x5b
(R:\ade\sesse\mysql\obj\plugin_output_directory\keyring_udf.dll+0
x180cc326b)
#2 0x7ffe458cdbe8 in _asan_wrap_CreateThread+0x248
(R:\ade\sesse\mysql\obj\plugin_output_directory\keyring_udf.dll+0
x180ccdbe8)
#3 0x7ffe458c00e7 in _asan_wrap_atol+0x9c7
(R:\ade\sesse\mysql\obj\plugin_output_directory\keyring_udf.dll+0x180cc00
e7)
#4 0x7ffe458b8451 in _asan_storeN_noabort+0x181
(R:\ade\sesse\mysql\obj\plugin_output_directory\keyring_udf.dll+0x18
0cb8451)
#5 0x7ffe65f8a37e in RtlDeactivateActivationContextUnsafeFast+0x1be
(C:\Windows\SYSTEM32\ntdll.dll+0x18002a37e)
#6 0x7ffe65f678c4 in RtlGetThreadErrorMode+0x434
(C:\Windows\SYSTEM32\ntdll.dll+0x1800078c4)
#7 0x7ffe65f676e7 in RtlGetThreadErrorMode+0x257
(C:\Windows\SYSTEM32\ntdll.dll+0x1800076e7)
#8 0x7ffe65f67566 in RtlGetThreadErrorMode+0xd6
(C:\Windows\SYSTEM32\ntdll.dll+0x180007566)
#9 0x7ffe65f6d33c in RtlDeleteBoundaryDescriptor+0x1cc
(C:\Windows\SYSTEM32\ntdll.dll+0x18000d33c)
#10 0x7ffe65f870b8 in RtlFormatCurrentUserKeyPath+0x7b8
(C:\Windows\SYSTEM32\ntdll.dll+0x1800270b8)
#11 0x7ffe65f86afc in RtlFormatCurrentUserKeyPath+0x1fc
(C:\Windows\SYSTEM32\ntdll.dll+0x180026afc)
#12 0x7ffe65f69efb in LdrLoadDll+0x8b
(C:\Windows\SYSTEM32\ntdll.dll+0x180009efb)
#13 0x7ffe6329484e in LoadLibraryExW+0x16e
(C:\Windows\System32\KERNELBASE.dll+0x18002484e)
#14 0x7ffe632d1c80 in LoadLibraryExA+0x30
(C:\Windows\System32\KERNELBASE.dll+0x180061c80)
#15 0x7ff7d37dd638
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x14321d638)
#16 0x7ff7d34d7698
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142f17698)
#17 0x7ff7d34d0b6c
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142f10b6c)
#18 0x7ff7d34c9056
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142f09056)
#19 0x7ff7d34ce0cf
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142f0e0cf)
#20 0x7ff7d32d2093
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142d12093)
#21 0x7ff7d30a3c6c
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142ae3c6c)
#22 0x7ff7d35ff7ab
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x14303f7ab)
#23 0x7ff7d7804e03
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x147244e03)
#24 0x7ff7d307ee56
(R:\ade\sesse\mysql\obj\runtime_output_directory\mysqld.exe+0x142abee56)
#25 0x7ffe636f8363 in BaseThreadInitThunk+0x13
(C:\Windows\System32\KERNEL32.DLL+0x180008363)
#26 0x7ffe65fc7090 in RtlUserThreadStart+0x20
(C:\Windows\SYSTEM32\ntdll.dll+0x180067090)
Shouldn't this go automatically? I can't find a way to link with cl.exe; on
Linux, I guess the clang driver with -fsanitize=address does magic behind the
scenes, but giving -fsanitize=address to lld-link seemingly isn't allowed.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20171117/de1812aa/attachment.html>
More information about the llvm-bugs
mailing list