Skip to content

[asan][win][regression] memcpy is not alias for memmove with dynamic setup on latest Windows #126077

Open
@yingcong-wu

Description

@yingcong-wu

I have seen the following error on some of our internal test machines

Failed Tests (5):
  AddressSanitizer-Unit :: ./Asan-x86_64-calls-Dynamic-Test.exe/AddressSanitizer/MemCpyOOBTest
  AddressSanitizer-Unit :: ./Asan-x86_64-inline-Dynamic-Test.exe/AddressSanitizer/MemCpyOOBTest
  AddressSanitizer-x86_64-windows-dynamic :: TestCases/Windows/dll_intercept_memcpy_indirect.cpp
  AddressSanitizer-x86_64-windows-dynamic :: TestCases/Windows/intercept_memcpy.cpp
  AddressSanitizer-x86_64-windows-dynamic :: TestCases/memset_test.cpp

After some investigation, with the latest Windows setup(these failures only reproduced on those setup) and dynamic setup(the static test config does not have these failures),

#elif SANITIZER_WINDOWS64
#define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0

is not true anymore. The memcpy is not the alias for memmove, and we will have to intercept them both. However, simply changing this to 1 for Windows, although it can fix the failures for latest Windows, would bring huge regression for not-so-update-to-date Windows.

I have no further idea how to solve this problem, but I think this would affect more users with time after users update their OS and runtime. And I don't sure which part of the environment is causing this difference.

System information:

OS: Microsoft Windows 11 Enterprise LTSC 24H2 10.0.26100
msvcrt.dll version: 7.0.26100.1882
vcruntime140.dll version: 14.42.34433.0

I don't know if this information is enough, and I am happy to provide other information if needed.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions