<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60501>60501</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
MemorySanitizer detects use-of-uninitialized-value in a simple OpenMP program
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lqhl
</td>
</tr>
</table>
<pre>
Here is a minimal OpenMP program:
```c++
#include <omp.h>
#include <stdio.h>
int main() {
#pragma omp parallel for
for (int i = 0; i < 10; i++) {
// do nothing
}
printf("done\n");
}
```
But MemorySanitizer detects use-of-uninitialized-value error:
```bash
❯ clang++-13 main.cpp -fopenmp -fsanitize=memory && ./a.out
Uninitialized bytes in __interceptor_strlen at offset 2259 inside [0x71d000000040, 2260)
==3120751==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7faa9ed131f5 (/lib/x86_64-linux-gnu/libomp.so.5+0x4a1f5)
#1 0x7faa9ed00fd6 (/lib/x86_64-linux-gnu/libomp.so.5+0x37fd6)
#2 0x7faa9ed00f44 (/lib/x86_64-linux-gnu/libomp.so.5+0x37f44)
#3 0x7faa9ecf489c in __kmpc_fork_call (/lib/x86_64-linux-gnu/libomp.so.5+0x2b89c)
#4 0x4a0f05 in main (/home/qliu/workspace/test-openmp-msan/a.out+0x4a0f05)
#5 0x7faa9eaaad8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#6 0x7faa9eaaae3f in __libc_start_main csu/../csu/libc-start.c:392:3
#7 0x420244 in _start (/home/qliu/workspace/test-openmp-msan/a.out+0x420244)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/lib/x86_64-linux-gnu/libomp.so.5+0x4a1f5)
Exiting
```
Without MemorySantinizer, it's ok:
```bash
❯ clang++-13 main.cpp -fopenmp && ./a.out
done
```
Another example is simply getting number of threads using OpenMP:
```c++
#include <omp.h>
#include <stdio.h>
int main() {
int number_of_threads = omp_get_max_threads();
printf("number_of_threads: %d\n", number_of_threads);
return 0;
}
```
This program crashes too with MemorySantinizer:
```bash
❯ clang++-13 main.cpp -fopenmp -fsanitize=memory && ./a.out
Uninitialized bytes in __interceptor_strlen at offset 2259 inside [0x71d000000040, 2260)
==3125901==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7f8d2b0fa1f5 (/lib/x86_64-linux-gnu/libomp.so.5+0x4a1f5)
#1 0x7f8d2b0e7fd6 (/lib/x86_64-linux-gnu/libomp.so.5+0x37fd6)
#2 0x7f8d2b0f5be8 (/lib/x86_64-linux-gnu/libomp.so.5+0x45be8)
#3 0x7f8d2b0f5bb9 (/lib/x86_64-linux-gnu/libomp.so.5+0x45bb9)
#4 0x7f8d2b16e9a4 in omp_get_max_threads (/lib/x86_64-linux-gnu/libomp.so.5+0xbe9a4)
#5 0x4a0ee3 in main (/home/qliu/workspace/test-openmp-msan/a.out+0x4a0ee3)
#6 0x7f8d2ae91d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#7 0x7f8d2ae91e3f in __libc_start_main csu/../csu/libc-start.c:392:3
#8 0x420224 in _start (/home/qliu/workspace/test-openmp-msan/a.out+0x420224)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/lib/x86_64-linux-gnu/libomp.so.5+0x4a1f5)
Exiting
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkV99v2zYQ_mvol4MNitTPBz84cb3tId3Qrij2ZFDSyeJCkSpJtU7_-oFS7DiOCyytsQ2YISgSj_ruu-PxvlA4J3cacUmSG5KsZ2LwrbFL9alVs9LUD8uf0SJIBwI6qWUnFPzao777DXprdlZ0hK8IXRN6uKd0uirCbsI1jTIudaWGGoHwW9P1i5bwN5dsztfSnFrHu9QeOiE1YTlhBZDsCbe3YtcJMF0PvbBCKVTQGDvZASC8AGF5gJBA-Boo4Tfj4y1E0_Mj1VNkePwRtiFsA7UBbXwr9e7JTLL100tvpfbNyI_VRiNJbjVhjLCC8APZw_xjjk5DvBk83GFn7MN7oaWXX9FCjR4r72BwODfNfNAyWISSX7GefxZqQEBrjf3WGpTCtY9Dbxgp1mS1gUoJvZsCnkd8zOqi6nuYN6ZH3YUH90iA8HU3MgLCUsJSWBC2EQsz-An0wykfKB88OpAatlupPdoKe2_s1nmrUIPwYJrGoQfGkgKkdjIseHJD91lU0-kXU8JugbGUhrxNxPma8DWPGM2SaHr5uHr39pe3PxG-Ok9YGPp2rk5WjnEKdJ81QhRYRzxqkjCYE7ZRsiRss8_TbRrPldTDfr7Tw2QIdevMIiHshu5jETXJkeYjavSESmlTp69G5VlTp-eo7BlqHH8Pahyfo_IjatXEeVFNS3ff9dW2MfZ-WwmlXuuIlXlRnTuKIWSLNjQJLkLBPcK2pkPCNp-UDFhfjL13vajCkEfn51M9zjsn9LHupswHrHMvyTEcIUSdN1M4SpbV1nlh_RjPdvReueBvEarZPbgae0fYRvdeTRG9-CC0o1WSE76K0mc-01OfyF_6PHc3PYYJ83HCoiJ8xQsW7s-Qs5AzRlkcj5jj5B_M2oj2tK_G-_sPd3erd3-8eiv92GZ5s5f-2EkvNsOP0rfmtCF6qUdW7BakJyxzYO6v2vUud7ixk3-b5ipoAlrAveh6Ncqkk12vHmCHPoQIeuhKtGAa8K1FUYdeHsYnDf1XtTNUWrBNFLem2R4oBpE0Xb_dYajg_WF8AjjK2bnqvcAJJURYUh-l8Palr2f6eIS16AerR6H-O9L5eyvd4d8RqKxwLTrwxsAX6duXNfQ_EMukoNcXy7xmJW3ElcVyRMXsymI5cU1KzF_PNXx1WSwPqGXxPahlcUkZJ9QoxUKMvf7CxnutrzJgXdLHWFBEfjUVRuTnXtJDRAKL6B9S4ezU51VVOH9UYXZVFWb_ZRWe1UteF7wQM1xGaZbwIqcJn7VLzHkRY4MVr1kUY5ZWdZ43cZZhRJuKZTO5ZJRxyiinMaMJX9R12ZQi5qlIRZNXjMQUOyHVQqnP3cLY3Uw6N-AypQmNZkqUqNx4DGVM4xcYjUE3kvXMLsM383LYORJTJZ13TyheeoXL7zg7SQ1iEmw8O9TOBquWrfd9ELHpCLiTvh3KRWW6kFn1-fBn3lvzJ1aesM3IOFTxGNFfAQAA__8l9onR">