<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - segmentation fault when using custom reduction in omp"
href="https://bugs.llvm.org/show_bug.cgi?id=44134">44134</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>segmentation fault when using custom reduction in omp
</td>
</tr>
<tr>
<th>Product</th>
<td>OpenMP
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Clang Compiler Support
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>steffen.seckler@tum.de
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>When using a custom reduction on an std::map in an omp parallel for, the
program compiles fine. I do, however, get a segmentation fault.
compilation via:
clang++-9 -fopenmp -std=c++17 test.cpp && ./a.out
clang++-9 --version:
clang version 9.0.1-+2019110812332108004e858e4ac00-1~exp1~20191108215024.72
both compiling and running with g++-9 (with and without address sanitizer) and
icc (19.0.5.281) work fine.
compiling clang with -fsanitize=address reveals:
AddressSanitizerAddressSanitizerAddressSanitizer:DEADLYSIGNAL
:DEADLYSIGNAL
AddressSanitizer=================================================================
:DEADLYSIGNAL
==28717==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000105 (pc
0x0000004cdab3 bp 0x7fa52f2f3910 sp 0x7fa52f2f3880 T5)
==28717==The signal is caused by a READ memory access.
:DEADLYSIGNAL
==28717==Hint: address points to the zero page.
#0 0x4cdab2 in std::_Rb_tree<unsigned long, std::pair<unsigned long const,
double>, std::_Select1st<std::pair<unsigned long const, double> >,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const, double>
<span class="quote">> >::_Reuse_or_alloc_node::_Reuse_or_alloc_node(std::_Rb_tree<unsigned long,</span >
std::pair<unsigned long const, double>, std::_Select1st<std::pair<unsigned long
const, double> >, std::less<unsigned long>, std::allocator<std::pair<unsigned
long const, double> > >&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h
#1 0x4cd722 in std::_Rb_tree<unsigned long, std::pair<unsigned long const,
double>, std::_Select1st<std::pair<unsigned long const, double> >,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const, double>
<span class="quote">> >::operator=(std::_Rb_tree<unsigned long, std::pair<unsigned long const,</span >
double>, std::_Select1st<std::pair<unsigned long const, double> >,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const, double>
<span class="quote">> > const&)</span >
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:1779:25
#2 0x4c9693 in std::map<unsigned long, double, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, double> >
<span class="quote">>::operator=(std::map<unsigned long, double, std::less<unsigned long>,</span >
std::allocator<std::pair<unsigned long const, double> > > const&)
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_map.h:317:37
#3 0x4c78bc in .omp_initializer.
/work/seckler/Documents/AutoPas/src/autopas/test.cpp:17:24
#4 0x4c723e in .omp_outlined._debug__
/work/seckler/Documents/AutoPas/src/autopas/test.cpp:28:45
#5 0x4c797c in .omp_outlined.
/work/seckler/Documents/AutoPas/src/autopas/test.cpp:29:3
#6 0x7fa535cfd402 in __kmp_invoke_microtask
(/usr/lib/x86_64-linux-gnu/libomp.so.5+0xaa402)
#7 0x7fa535c96c54 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x43c54)
#8 0x7fa535c95821 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x42821)
#9 0x7fa535ce9a80 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x96a80)
#10 0x7fa5351dc6da in start_thread
(/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
#11 0x7fa5348e188e in clone
/build/glibc-OTsEL5/glibc-2.27/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h
in std::_Rb_tree<unsigned long, std::pair<unsigned long const, double>,
std::_Select1st<std::pair<unsigned long const, double> >, std::less<unsigned
long>, std::allocator<std::pair<unsigned long const, double> >
<span class="quote">>::_Reuse_or_alloc_node::_Reuse_or_alloc_node(std::_Rb_tree<unsigned long,</span >
std::pair<unsigned long const, double>, std::_Select1st<std::pair<unsigned long
const, double> >, std::less<unsigned long>, std::allocator<std::pair<unsigned
long const, double> > >&)
Thread T5 created by T0 here:
#0 0x47e2ea in pthread_create
(/work/seckler/Documents/AutoPas/src/autopas/a.out+0x47e2ea)
#1 0x7fa535ce9130 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x96130)
==28717==ABORTING</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>