[llvm-bugs] [Bug 44134] New: segmentation fault when using custom reduction in omp

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Nov 25 04:22:42 PST 2019


https://bugs.llvm.org/show_bug.cgi?id=44134

            Bug ID: 44134
           Summary: segmentation fault when using custom reduction in omp
           Product: OpenMP
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Clang Compiler Support
          Assignee: unassignedclangbugs at nondot.org
          Reporter: steffen.seckler at tum.de
                CC: llvm-bugs at lists.llvm.org

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>
> >::_Reuse_or_alloc_node::_Reuse_or_alloc_node(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> > >&)
/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>
> >::operator=(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>
> > const&)
/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> >
>::operator=(std::map<unsigned long, double, std::less<unsigned long>,
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> >
>::_Reuse_or_alloc_node::_Reuse_or_alloc_node(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> > >&)
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

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20191125/87a4c305/attachment-0001.html>


More information about the llvm-bugs mailing list