<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/107263>107263</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang OpenMP hello world segfault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jakub-homola
</td>
</tr>
</table>
<pre>
Hello,
consider the following code -- it is a simple OpenMP hello world with an infinite loop:
```
#include <cstdio>
#include <omp.h>
int main()
{
printf("Max threads: %d\n", omp_get_max_threads());
#pragma omp parallel
{
printf("Hello world from thread %d out of %d\n", omp_get_thread_num(), omp_get_num_threads());
while(true) ;
}
printf("End of program\n");
return 0;
}
```
Compile with
```
clang++ -O2 -fopenmp source.cpp -o program.x
```
and run.
Expected output (8 threads):
```
Max threads: 8
Hello world from thread 0 out of 8
Hello world from thread 1 out of 8
Hello world from thread 2 out of 8
Hello world from thread 3 out of 8
Hello world from thread 4 out of 8
Hello world from thread 5 out of 8
Hello world from thread 6 out of 8
Hello world from thread 7 out of 8
```
(or in some other random order). Then it should hang due to the infinite loops.
Actual output:
```
Max threads: 8
Hello world from thread 0 out of 8
Hello world from thread 5 out of 8
Hello world from thread 5 out of 8
Hello world from thread 3 out of 8
Hello world from thread 3 out of 8
Hello world from thread 4 out of 8
Hello world from thread 4 out of 8
Hello world from thread 1 out of 8
Hello world from thread 1 out of 8
Hello world from thread 2 out of 8
Segmentation fault (core dumped)
```
This is obviously wrong. One thing is the segfault. Other thing is that more lines are printed than expected -- some threads print twice, some don't print at all; I never saw a thread print 3 times.
Using -O1, -O2 or -O3 creates this error. Using -O0, the program runs fine just as expected.
The issue occurs on multiple machines, I tried clang versions 16.0 through 18.1, all have the issue.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VkuP4zYT_DX0pSFBpvw86DBP7B4W_oBvch7QYlvihGQLfNiz_z6gJI_HE28iBEEAg7bVpWKxu1mk8F41FrFiy3u2fJyJGFpy1Zv4Pe6zlgxpMduT_Fl9Q62J8QdWPLLibhhrsl5JdBBahANpTSdlG6hJImQZqADKgwCvTKcRdh3aH_-DNhHBiZyWcFKhBWFB2YOyKiBooo6VIz1bFeNn-MtLZWsdJQIrH2ofpCJWPt0Kkuny9hLrR2UDGKEs4xvGt2NkfT_8AADonLLh0If5D_EOoXUopGflHTC-lGz5YBnnjD8Ame61wfBqxPvrGTWw8i0rz5SMl50TjREJD51wQmvUl_muJv8q4NunLB0cmVFNrwQoBqDDr1QNyFcbzVnUJWaj-QvFp1ZpZHwTXETGt3CJ9HIfb-fqycqkpnPUOGE-BF14x9cchugsFJfnZ8avhe7HVESlse-Rm7BaC9swfs_4PWQ7DtmBOrSmA0_R1ZjXXQcZnXXl7zdJhJXgos0_z_z03mEdsM9zFwMwvtl8dENa1-3-_NIzm-HprwpZnKv4N7j5RByfiCsn4hYTccuJuNVE3PoL7k8msCEHyoIng0ChRQdOWEkGyEl0jG9zeGnRJvfxLUUtoRW2ARkRAvVOdeU2_qr0d3WIQo-F_28LPTWRU3FTC_1vN8RU3NTG_qcb4P_YGLRBBEUWDiLqfiPX5BBkNB3KyylwXd6XVvl0cNH-qCh6_RNOjmyTw84ihDadcMr3jeSx6Ylz2PWN-CkoApg0lVYWPQiHg2WiTDELeLaYLBs6eeynAQXhpGpMvt3HJFnG12GMiQBCa1bew3eweEQHXpxAnNMwgEoIyuB1b__mk7psN0_EyTDJQbYroXYoAibRygM6Ry6HM7ZI2LTU0UWTV3o4KIvwFn0A4T-WcjXXS9pm3kcEquvoPJAFE3VQ6SJgRN2mtCTu7xCcQgm9mcMRnVdkPcxXeZFWRLFpYb7Je81Ca2jFEYdNnNjzmaxKuS23YobVfM2Xi9VyURSztlpvi5UUq3JRYL3eLvecc0Q5r1drvpfbAmeq4gVfFNtiMV8uV4sil5tCiELwVc33S7ku2aJAI5TOtT6anFwz66es5sWar8qZFnvUvr82cT4eRTzdoFyVXsj2sfFsUWjlg79QBBU0VsNib9yHzg01i05XbQhdMhjGnxl_blRo4z6vyTD-nPjGr6xz9IZ1YPy51-cZfx4lHiv-RwAAAP__O_8Vrg">