[all-commits] [llvm/llvm-project] 46282f: [Sanitizer] Use CreateDirectoryA for report dirs
Choongwoo Han via All-commits
all-commits at lists.llvm.org
Fri Dec 3 12:34:36 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 46282fad060f623019686919832741eea4ff8bfc
https://github.com/llvm/llvm-project/commit/46282fad060f623019686919832741eea4ff8bfc
Author: Choongwoo Han <choongwoo.han at microsoft.com>
Date: 2021-12-03 (Fri, 03 Dec 2021)
Changed paths:
M compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
Log Message:
-----------
[Sanitizer] Use CreateDirectoryA for report dirs
Using `_mkdir` of CRT in Asan Init leads to launch failure and hanging in Windows.
You can trigger it by calling:
> set ASAN_OPTIONS=log_path=a/a/a
> .\asan_program.exe
And their crash dump shows the following stack trace:
```
_guard_dispatch_icall_nop()
__acrt_get_utf8_acp_compatibility_codepage()
_mkdir(const char * path)
```
I guess there could be a cfg guard in CRT, which may lead to calling uninitialized cfg guard function address. Also, `_mkdir` supports UTF-8 encoding of the path and calls _wmkdir, but that's not necessary for this case since other file apis in sanitizer_win.cpp assumes only ANSI code case, so it makes sense to use CreateDirectoryA matching other file api calls in the same file.
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D114760
More information about the All-commits
mailing list