<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/145259>145259</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[ASan] [AArch64] Simple program crashes on startup with `mmap` failure in ASan runtime on Clang 20
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
happyme531
</td>
</tr>
</table>
<pre>
**Description:**
When compiling a minimal C++ "Hello, World!" program with `-fsanitize=address` on AArch64 with a recent Clang 20 development build, the resulting executable fails immediately upon execution.
The error message indicates an "out of memory" failure when the AddressSanitizer runtime attempts to `mmap` its shadow memory at `0x040000000000`. The program crashes before `main()` is called, and the stack trace is empty, suggesting a failure very early in the runtime initialization process.
**Environment:**
* **Clang Version:**
```
Debian clang version 20.1.7 (++20250613123054+9ba132be8eea-1~exp1~20250613003154.130)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-20/bin
```
* **Operating System:**
```
> lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
> ulimit -a
Maximum size of core files created (kB, -c) 0
Maximum size of a process’s data segment (kB, -d) unlimited
Control of maximum nice priority (-e) 0
Maximum size of files created by the shell (kB, -f) unlimited
Maximum number of pending signals (-i) 126000
Maximum size that may be locked into memory (kB, -l) 4033516
Maximum resident set size (kB, -m) unlimited
Maximum number of open file descriptors (-n) 1048576
Maximum bytes in POSIX message queues (kB, -q) 800
Maximum realtime scheduling priority (-r) 0
Maximum stack size (kB, -s) 8192
Maximum amount of CPU time in seconds (seconds, -t) unlimited
Maximum number of processes available to current user (-u) 126000
Maximum amount of virtual memory available to each process (kB, -v) unlimited
Maximum contiguous realtime CPU time (-y) unlimited
```
* **Hardware:** Rockchip RK3588 development board, with 32GB RAM.
**Steps to Reproduce:**
1. Create the following C++ file (`test.cpp`):
```cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
```
2. Compile it with Clang 20 and AddressSanitizer enabled:
```sh
clang++-20 ./test.cpp -fsanitize=address
```
3. Run the resulting executable:
```sh
./a.out
```
**Actual Result:**
The program crashes immediately with the following error from the AddressSanitizer runtime:
```
==843770==ERROR: AddressSanitizer: out of memory: failed to allocate 0x2000 (8192) bytes of memory at address 0x040000000000 (error code: 12)
==843770==Process memory map follows:
0x000ffffff000-0x001200000000
0x001200000000-0x001400000000
0x001400000000-0x002000000000
0x00556ef70000-0x00556f0bf000 /tmp/a.out
0x00556f0cf000-0x00556f0d3000 /tmp/a.out
0x00556f0d3000-0x00556f0d6000 /tmp/a.out
0x00556f0d6000-0x00556fa6a000
0x007f9c200000-0x007f9c300000
0x007f9c400000-0x007f9c500000
0x007f9c572000-0x007f9ca00000
0x007f9cb00000-0x007f9cc00000
0x007f9cca3000-0x007f9ccb3000
0x007f9ccb3000-0x007f9ce0f000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
0x007f9ce0f000-0x007f9ce1e000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
0x007f9ce1e000-0x007f9ce22000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
0x007f9ce22000-0x007f9ce24000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
0x007f9ce24000-0x007f9ce27000
0x007f9ce27000-0x007f9ce3a000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
0x007f9ce3a000-0x007f9ce49000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
0x007f9ce49000-0x007f9ce4a000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
0x007f9ce4a000-0x007f9ce4b000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
0x007f9ce4b000-0x007f9ce5e000 /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
0x007f9ce5e000-0x007f9ce6e000 /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
0x007f9ce6e000-0x007f9ce6f000 /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
0x007f9ce6f000-0x007f9ce70000 /usr/lib/aarch64-linux-gnu/libresolv-2.31.so
0x007f9ce70000-0x007f9ce72000
0x007f9ce72000-0x007f9ce75000 /usr/lib/aarch64-linux-gnu/libdl-2.31.so
0x007f9ce75000-0x007f9ce84000 /usr/lib/aarch64-linux-gnu/libdl-2.31.so
0x007f9ce84000-0x007f9ce85000 /usr/lib/aarch64-linux-gnu/libdl-2.31.so
0x007f9ce85000-0x007f9ce86000 /usr/lib/aarch64-linux-gnu/libdl-2.31.so
0x007f9ce86000-0x007f9ce8d000 /usr/lib/aarch64-linux-gnu/librt-2.31.so
0x007f9ce8d000-0x007f9ce9c000 /usr/lib/aarch64-linux-gnu/librt-2.31.so
0x007f9ce9c000-0x007f9ce9d000 /usr/lib/aarch64-linux-gnu/librt-2.31.so
0x007f9ce9d000-0x007f9ce9e000 /usr/lib/aarch64-linux-gnu/librt-2.31.so
0x007f9ce9e000-0x007f9ceba000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
0x007f9ceba000-0x007f9cec9000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
0x007f9cec9000-0x007f9ceca000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
0x007f9ceca000-0x007f9cecb000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
0x007f9cecb000-0x007f9cecf000
0x007f9cecf000-0x007f9cf68000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
0x007f9cf68000-0x007f9cf78000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
0x007f9cf78000-0x007f9cf79000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
0x007f9cf79000-0x007f9cf7a000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
0x007f9cf7a000-0x007f9d131000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
0x007f9d131000-0x007f9d141000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
0x007f9d141000-0x007f9d14c000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
0x007f9d14c000-0x007f9d14f000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
0x007f9d14f000-0x007f9d175000
0x007f9d175000-0x007f9d196000 /usr/lib/aarch64-linux-gnu/ld-2.31.so
0x007f9d196000-0x007f9d1a3000
0x007f9d1a3000-0x007f9d1a5000 [vvar]
0x007f9d1a5000-0x007f9d1a6000 [vdso]
0x007f9d1a6000-0x007f9d1a7000 /usr/lib/aarch64-linux-gnu/ld-2.31.so
0x007f9d1a7000-0x007f9d1a9000 /usr/lib/aarch64-linux-gnu/ld-2.31.so
0x007fc451a000-0x007fc453b000 [stack]
==843770==End of process memory map.
AddressSanitizer: CHECK failed: sanitizer_common.cpp:61 "((0 && "unable to mmap")) != (0)" (0x0, 0x0) (tid=843770)
<empty stack>
```
**Expected Result:**
The program should execute successfully, print "Hello, World!" to the console, and exit with status 0.
```
Hello, World!
```
**Additional Notes:**
Older Clang versions will also crash but with another (looks related) issue: https://github.com/llvm/llvm-project/issues/65144#issuecomment-1746565874
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WluTKikS_jX0C6FBURf1oR9s7Z6ZmMuZ6J7Z2bcJClJlDwU1QNntPMxv34AqL2WrRzfcCuOcFpKPL5MkyUpkzsmlBnhE-RPK5w-s8StjH1esrjcV5GnyUBqxeUR0iuh0Do5bWXtpNEqnbRsi4fPHCjTmpqqlknqJGa6klhVTeIboE6JPGFH6PShlEJ3hP4xVAtEEUYpra5aWVfhd-hVGBRksHNPSy78BpXMmhAXnUEGw0Xg6tXxVZK0owxY4aI9niuklpgQLWIMydRUay0aGGWbYrwBbcI3ygRZ8AG88KxXgBZPKYVlVICTzoDa4qY3uJKTRw1av31aAwVpjcQXOsSVgqYXkzIPDTAetTOOxWeAKKmM3QaOA3FjA78EkYf5pq8Vbp5fFttFeVoCZ91DV3mFvgupVxeqgqvQOuxUT5r1DxcyHfvJBMrJ7UEGGONDbWpBb5lbgcAkLYyECMqkRHSM6ibAOc6YURLswLSI35xn_ir1lHIJAoLMJ_a5ZLsH5di23Gq3BbjAwqzZYtqptNZFBNabk3yzYLlDi4Fxnw9ZPnvVaWqPD8hz5DqJTjHHb0q7mv8C6Ix_DQaQg3af9PodSMo15HLNux2BKhslwhKPewfMooTkpkjShKckzRJ8mJUtSWsIYgA2Sf-CjTv7ZChGSJnk2TFISjNbO8huzSwicMWPRAQeN_qrNux4oqZuPwVI3W8mVBSZwZQSoIF8bJz-6vh-089H6c2lDH6IvjbOIvihZhn_VuhpQguhLKfUJdQ9t9KUGy-LSvG2ch-qSmVD6jJUr_7SggDnAA4bI9BeDf3p7CjwbFfzYAmZrJlXYGGHN5tJ5K8vGG4t_mAe2raVDVy8CHCzCd7_8jujLT8EiOEmC-ctGKQcbaC352hLoBoUnSRCZzowAzaqD9t2w1jfSZ9woWUnfUv-ZfciqqbCTf0PYdjy4-kIGNbgF5kHgiw-i469PwcEHHNEJJicg2dZ90TNFY4ImE4cF8ww7WMbg8k1oEaAbHWmDiFpqb42KcaKbTUsetq40VvrNZc47-AGc49y3QLlp9_YKlPoW18Ux1y20bqoSbACvQYvgbeGgYMpdyVUG4IQWIVQdEfYr5nHFNrgErAz_CgJL7c022l0mrAJuRtI0T4oDYAtOirA6Dnw7y3XPHrj6tiVMDTraGotuHxh72R7BEjpagmTjfHTIuNyEQ0Rq_OuXtx_-vTtf_mqggUuge8Z_BeBxz74WmIoR2fEViCYextd6WeBqP3lYPCBuMOgnli6yTCb0AJVVptHx3Jz9-jvujhDsgBstzuiO6Ljrj6j-Cr9tt3GIcNvoFk5a3lgbHKVxYE9YoDnpt3vCa2l9w9TuaD6EBsZX22mPzbA-R5gb7eWyMY3br97OKlcs2eYYGF84O75nVrwzC7szA78a_pWvZI1ff0zz8bifRhlmY7oQU66UfveEX6c_9471Nw91TGBeobZGNByOTvdkiPEsBqYYlBZGKfMe3HKbGcb9FI7rgnhwfsjrkAWFUyP9dKKFvq6JplJz1QjAKJ1J47wFVqH0uZ01iEgdosw2BcJo9NR1YOy8COjplIf0DaUzlM7Opqhd924MaKFQugez4BurMdm3odH81DqQKQ3GiFkyYOlbs-4S2JCTfcoVQQfnEids4VZdS8x_WmMOKMFDRF-2hsQn0-mT1NIhxq-NPpsxX2IQpmRD0_jT0K07THncN68R-8hJTuWxh7l5NFTffdqsfGFNdTHJbmmHTy8rmqN0Ps7S0Yi0fz-_vn55DUnIMU5o66f46TQmxCCC1zOlTHgbwOSDEkKCH8dQRyddfN-NC0l8twC4n8mHQa023IiYCSW0TZo-8_y1Cy4dZsXqziRuvz7hIR-EkEV8CCGD8DWhu1eHvty-o5XLzsllPTlKzsjleQGL0U4uz4sFKQONuG1ffFUfucvBwAXhi95AkV47MEoeDCyuHlgcDmQF-6zSaDHhdK96-JqeUj10ZH25_JxcPqKHcuycXNnH4-fkOEt7cmV6Rq7syQHZL83hG8n2ZWf_khN7-IAO02TozAnkFmqPnMDdkCPUHpnSuyFT2kfO7oec9ZFHp9ej7djLpewWBkvO_3RDZ4bJKeiItYfOJveDjlgH0HdknR2xLu8IXfag85s81IIzan1pyfO-mxZ3hi-O4G_auVfA97dvDOF3hB-RPjw9sx_6cRFG-S00hLpIIe9Bj2_a7Jehx_3dPr4j6_ER6-KO0EUfWty05P4itOhBT_j9oCPWAfQdWU-OWN-2gy9D93dveVPErH0sLl7CL_thk98U7K_A5_2Iz-_Nnx_xvynsX4Pfj_0x0Twp1wuDi2J8C4_qAoMWao88uh_y6Aj5prW_jDzpI9-06peRD9dbJGlyC7LzgrfvvOGsL4ZkSMefJ-lQ95Nk_5dJsqNJbgp1V0_C-5PcdPhfPcmiN0k8L0_J9Q5SkUxuOJIu7NEOaI_LTr_DdB0HctvTNn9ar5lF-fzkoD5pVuwHCWfODTpiNLqTpmzUx71hx57H5VmeHOwqnuVpuVMylnJbLU8UQLQ4qJke1BeGiExPFUVm3z_PfuwqIeH7ts5k_-SmqoyOdbx0WiQYURpLcGOCES0QLUJLo7dF03jtSWPFg04woglK5zhIxxYa__wgiM5w_C-IjL0Ue_67mzqUzuIFZlu07mqBp0pRzx81cA_i28UotzKNEl0ZDLBreDDPolEqXpPWVmp_tnDoTSxNcaOdUbC9doWPbeXPeeYbh8nwc4XqM94ZVaZCSC-NZgr_Yjy4I12-KAG2KzF2N6QOv0ulMFPOtLU2XDYdIaaNX4ENFlbGfHXYgmIe4n2WdK6JxamV93U7zQuiL0vpV0055KbqbjG3l5m1Nf8B7hF9iSMdoi9FnmQZomlsCF4C2g-SUVbkRT4eZYhMH8RjKibphD3AY4gxRZ6kefawekwEYQkpaEGzCYzEOB2NF8BpOimKCQGWPsjH9g6XpiQjNM2G4zzJE1IUnBUp5GmCMgIVk2oY2A2NXT5EGo9JltN88qBYCcrFX0FQ2lVUKcrnD_YxqlM2S4cyoqTzbg_hpVfxpxPTN6ZRPg_brPuZQvj2Jqtafa5sGh2W3vqm3v3sYXv3v71qlxoHyN0Fu9G7OvFDY9Xj_74Inb7rR_rfAAAA___dPpwx">