<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111166>111166</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[win/asan] windows_hook_rtl_allocators=1 breaks CreateProcess
</td>
</tr>
<tr>
<th>Labels</th>
<td>
platform:windows,
compiler-rt:sanitizer
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zmodem
</td>
</tr>
</table>
<pre>
Reproducer courtesy of @danakj
Consider:
```
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[]) {
STARTUPINFOA startup_info;
ZeroMemory(&startup_info, sizeof(startup_info));
startup_info.cb = sizeof(startup_info);
PROCESS_INFORMATION process_info;
ZeroMemory(&process_info, sizeof(process_info));
if (CreateProcessA("C:\\Windows\\System32\\cmd.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &startup_info, &process_info)) {
fprintf(stderr, "OK!\n");
CloseHandle(process_info.hThread);
WaitForSingleObject(process_info.hProcess, INFINITE);
CloseHandle(process_info.hProcess);
} else {
fprintf(stderr, "FAILED! %d\n", (int)GetLastError());
return 1;
}
}
```
Building with ASan and running without any special flags, it works:
```
C:\src\llvm-project>build\bin\clang-cl -fsanitize=address \src\temp\a.cc
C:\src\llvm-project>a.exe
OK!
Microsoft Windows [Version 10.0.19045.4894]
(c) Microsoft Corporation. All rights reserved.
```
Setting `windows_hook_rtl_allocators` (introduced in c9fa99d066f0f615538e106880fdb9fb48f8e55b) causes it to fail:
```
C:\src\llvm-project>set ASAN_OPTIONS=windows_hook_rtl_allocators=1
C:\src\llvm-project>a.exe
FAILED! 87
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVVtP4zgU_jXuyxFR4iRt8tCHkLa71UKLKLMj7Uvl-NJ6cOzIdmDh169yoVBgmdFIkWP7-Phcvu8cE-fkQXM-R-klShcT0vqjsfPn2jBeTyrDnua3vLGGtZRboKa1nrsnMAJQEjKiyf0PQOEChcUwlkY7ybhFcfF2G03D8RuWOJaaqpZxQHHpPJMmOKJ4-Zn0UWpmHt1beT9K7aEmUiOcdVNiDxThEuiRWISLbv0wxIRwDmh2OWgB7O6K27tvN-vNaluA88T6ttlLLQyKT2f-4dZc89rYJ4QzhKdnx3AJTj5zIxDOzgV5973e8lYY0ApQvPh_zRe1Ufnmdlsud7t95-btdXG33m6gsYZy537m7Nmxt86eC_JPrIIUgHBWWk48vxmOF_2tuOwQTUuUlt8HQIbF7sl5Xsd4WNGaBfxfjjDuDG--XV199l8VV7tlNwk_k36S7g9B5e8wBRCNldoPiWXc2kENb_9COEJpqXuXPsYLUCrj-J9EM8XfpSg43h0tJ-wM1O9E-pWxO6kPim-rH5z6D2pj4joX1pvVerO-W57d8ZXJk-5bIqHZArhy_JdCXhXrq-UC4QgQTtkp9k7WFQrC-R_cXxHnl9Ya24P7jrcAlvvWaoheN9FsMWbuNHlX0v142UrFpD7Ao_RHKHZEA9EMbKv1y65pPRD9BK7hVBIFQpFDnyvp4dHYe_d16xh56CxFaanUQ33RWNPDEC-rzjpKy0rqjoyK6MMFVXAhHNHSy2eO4gVhzHLn4HSH53WD0pIElJ41si_skJ7k_bGBYP30WlJrnBEexgoBlF7-za2TRkMUBmEQ5WGSBkmWJ11bGntdRjsyvyqXxjbGEi-NDqBQCqw8HL0Dyx23D5wFX6R_x73v8oym4dg290dj7vfWqz1RylDijXVoGo5kGPo6A6mB5oLkOQunUxGKaZSmccajcJploWBVLqokExlP06pzlpLWcdcB5g0IItXvQ-a4h2JXbPbbm67H7VC8-MrzeBH9BkivJZHN3nk4YfOY5XFOJnwezXAWpjjKk8lxTkmez2Z5lgkhRCQojmYiy-KcUJERRshEznGIkygMkyjBeZoEOIxYNCWYJSzCM5GgJOQ1kSroHAuMPUykcy2fR1EUTacTRSquXP_uYtwo4oWxNYqLMfyhaBHG1NSNVNxeWI_i4oXJtpOni4md92FX7cGhJFTSefdqz0uv-pf9sXsmV8QRjdIF_CTBUFlO7h2cvQKT1qr50fumL0-8Qnh1kP7YVgE1NcKrzub4O2GAV33ADuHVGPPDHP8XAAD__6fth5Y">