Skip to content

Regression for running executables with ASAN in 0.9.27 alpha #821

@rjurga

Description

@rjurga

I upgraded to the latest version (debugger says 0.9.28 but the release notes say 0.9.27).

It fails to run my exe if I use asan. It worked on the previous raddbg release. It hits an access violation with the following callstack:

"{[inlined] bool QuickCheckForUnpoisonedRegion(unsigned long long, unsigned long long) (0x7ff8b794dce9)...","[inlined] bool QuickCheckForUnpoisonedRegion(unsigned long long, unsigned long long) (0x7ff8b794dce9) @ sanitizer_common_interceptors.inc:427",clang_rt.asan_dynamic-x86_64.dll
"{unsigned long long __asan_wrap_strlen(char const *) (0x7ff8b794dce9), {"" (0), 0, 0, unsigned long long...",unsigned long long __asan_wrap_strlen(char const *) (0x7ff8b794dce9) @ sanitizer_common_interceptors.inc:427,clang_rt.asan_dynamic-x86_64.dll
"{??? (0x7ff97267baa1), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff97267baa1),ntdll.dll (Debug info not loaded)
"{??? (0x7ff96f8a2795), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff96f8a2795),KernelBase.dll (Debug info not loaded)
"{bool FileExists(char const *) (0x7ff8b7900c1a), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",bool FileExists(char const *) (0x7ff8b7900c1a) @ sanitizer_win.cpp:105,clang_rt.asan_dynamic-x86_64.dll
"{char *FindPathToBinary(char const *) (0x7ff8b78f148c), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",char *FindPathToBinary(char const *) (0x7ff8b78f148c) @ sanitizer_file.cpp:318,clang_rt.asan_dynamic-x86_64.dll
"{void ChooseSymbolizerTools(__sanitizer::IntrusiveList<__sanitizer::SymbolizerTool> *, __sanitizer::LowLevelAllocator *)...","void ChooseSymbolizerTools(__sanitizer::IntrusiveList<__sanitizer::SymbolizerTool> *, __sanitizer::LowLevelAllocator *)... @ sanitizer_symbolizer_win.cpp:268",clang_rt.asan_dynamic-x86_64.dll
"{[inlined] void *operator new(unsigned long long, __sanitizer::LowLevelAllocator &) (0x7ff8b7916ac0)...","[inlined] void *operator new(unsigned long long, __sanitizer::LowLevelAllocator &) (0x7ff8b7916ac0) @ sanitizer_symbolizer_win.cpp:291",clang_rt.asan_dynamic-x86_64.dll
"{__sanitizer::Symbolizer *__sanitizer::Symbolizer::PlatformInit(void) (0x7ff8b7916ac0), {"" (0), ...",__sanitizer::Symbolizer *__sanitizer::Symbolizer::PlatformInit(void) (0x7ff8b7916ac0) @ sanitizer_symbolizer_win.cpp:291,clang_rt.asan_dynamic-x86_64.dll
"{__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void) (0x7ff8b7912f5e), {"" (0), 0, ...",__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void) (0x7ff8b7912f5e) @ sanitizer_symbolizer_libcdep.cpp:24,clang_rt.asan_dynamic-x86_64.dll
"{[inlined] uint32 atomic_load(__sanitizer::atomic_uint32_t const volatile *, __sanitizer::memory_order)...","[inlined] uint32 atomic_load(__sanitizer::atomic_uint32_t const volatile *, __sanitizer::memory_order)... @ asan_rtl.cpp:602",clang_rt.asan_dynamic-x86_64.dll
"{[inlined] int32 Verbosity(void) (0x7ff8b798f898), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",[inlined] int32 Verbosity(void) (0x7ff8b798f898) @ asan_rtl.cpp:602,clang_rt.asan_dynamic-x86_64.dll
"{bool AsanInitInternal(void) (0x7ff8b798f898), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",bool AsanInitInternal(void) (0x7ff8b798f898) @ asan_rtl.cpp:602,clang_rt.asan_dynamic-x86_64.dll
"{void AsanInitFromRtl(void) (0x7ff8b798f6d0), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",void AsanInitFromRtl(void) (0x7ff8b798f6d0) @ asan_rtl.cpp:615,clang_rt.asan_dynamic-x86_64.dll
"{??? (0x7ff9700207d6), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff9700207d6),ucrtbase.dll (Debug info not loaded)
"{int32 dllmain_crt_process_attach(HINSTANCE__ *const, void *const) (0x7ff8b799df50), {"" (0), 0, ...","int32 dllmain_crt_process_attach(HINSTANCE__ *const, void *const) (0x7ff8b799df50) @ dll_dllmain.cpp:66",clang_rt.asan_dynamic-x86_64.dll
"{int32 dllmain_dispatch(HINSTANCE__ *const, unsigned long const, void *const) (0x7ff8b799e14b), {...","int32 dllmain_dispatch(HINSTANCE__ *const, unsigned long const, void *const) (0x7ff8b799e14b) @ dll_dllmain.cpp:276",clang_rt.asan_dynamic-x86_64.dll
"{??? (0x7ff9726fdd5a), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff9726fdd5a),ntdll.dll (Debug info not loaded)
"{??? (0x7ff9725bba53), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff9725bba53),ntdll.dll (Debug info not loaded)
"{??? (0x7ff97263640c), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff97263640c),ntdll.dll (Debug info not loaded)
"{??? (0x7ff9725ae83a), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff9725ae83a),ntdll.dll (Debug info not loaded)
"{??? (0x7ff9725ae866), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff9725ae866),ntdll.dll (Debug info not loaded)
"{??? (0x7ff97262d8bd), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff97262d8bd),ntdll.dll (Debug info not loaded)
"{??? (0x7ff97262ba50), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff97262ba50),ntdll.dll (Debug info not loaded)
"{??? (0x7ff97262b83a), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff97262b83a),ntdll.dll (Debug info not loaded)
"{??? (0x7ff9725a854e), {"" (0), 0, 0, unsigned long long, {__sanitizer::Symbolizer *__sanitizer::Symbolizer::GetOrInit(void)...",??? (0x7ff9725a854e),ntdll.dll (Debug info not loaded)

So ASAN seems to be looking for a symbolizer (ChooseSymbolizerTools), checks some bytes in shadow memory, and hits an exception. I know very little about ASAN internals, but I'm still using the same compiler toolchain as before, so presumably it was hitting this access violation with the previous raddbg version as well, but somehow it worked anyway. Here I cannot proceed further, hitting F5 doesn't resume execution beyond the access violation.

This is with MSVC on Windows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA report of unintended or broken behavior.DebuggerPertains to the debugger.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions