How to use msvc asan with visual studio

0

I tried enabling asan in project->properties->c/C++->Enable Address Sanitizer (Experimental) : Yes (/fsanitize=address).

I can then build my project, but when running it breaks at extern "C" void __cdecl _initterm(blah blah) in initterm.cpp with Exception thrown at 0x00007FFFCD3B2EB8 (ntdll.dll) in gnomes.exe: 0xC0000005: Access violation writing location 0x0000053747340000.

I've been told by others that this is a thing that happens, and I should continue through it. It then moves to ~50 or so other exceptions somewhere within ntdll.dll or other window api files, before eventually getting to my program, where it errors at the first line of main: GTApplication *app = new GTApplication(); (the first line of my main) with Access violation writing location blah.

So I'm unsure how to interpret this information. Is there something wrong with my foundational windows API layers on my computer? or is that just unavoidable (if weird) behavior. And does that mean I should interpret the first line of my program as also just a quirk of using asan? or is there something wrong with the allocation of my application object?

Am I using asan incorrectly?

c++
windows
visual-studio
address-sanitizer
asked on Stack Overflow Nov 1, 2020 by Phildo

1 Answer

0

I am facing the same exact issue, while building 64-bit applications (looking at the size of pointers listed in messages, it's the same case for You), using VS 16.8.3. Even for an application, that does literally nothing (returns 0).

If possible, consider building 32-bit version of the application and checking, if the problem persists. ASan doesn't report such issues for me for 32-bit binaries.

Address Sanitizer in VS is still experimental, and support for x86-64 is even less mature, than for 32-bit x86.

answered on Stack Overflow Dec 16, 2020 by ArturJ • edited Dec 16, 2020 by ArturJ

User contributions licensed under CC BY-SA 3.0