bash-3.2$ gcc -v Using built-in specs. Target: i686-apple-darwin11 Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1 Thread model: posix gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00) The following program is compiled with -fopenmp. (gcc -fopenmp -Wall a.c) There are no warnings, no compilation errors. OS: OSX Lion 10.7.3 int main(void) { int i; #pragma omp parallel for for(i=0;i<4;i++) { while(1); } return 0; } If I run the program several times, sometimes I get a SIGSEGV. If you don't receive the SIGSEGV in the first 5-7 seconds, just intrerupt it (via Ctrl-C) and run it again. bash-3.2$ ./a.out Segmentation fault: 11 (core dumped)
GCC 4.2 is not supported for several years already, and furthermore if I read this well, this isn't gcc at all, but LLVM.
(In reply to comment #1) > GCC 4.2 is not supported for several years already, and furthermore if I read > this well, this isn't gcc at all, but LLVM. Thanks for the fast reply, I tried it also on Linux Mint 64bit, gcc version 4.6.1. Same result.. (SIGSEGV) but faster (I get it in under 1 sec). I also tried it on a CentOS 6.2 with gcc 4.4.6. gomp_loop_static_start() gets called, with parameters like => chunk_size=140737488347560, istart=0x7fffffffe1b0, iend=0xca. The last one is a pointer which gets dereferenced.. hence getting the SIGSEGV. I think it's not a LLVM bug.
You're right, but please report bugs for supported compilers only next time. The problem only happens if the omp for body doesn't fall through, i.e. only on very questionable sources like this one.
Created attachment 26649 [details] gcc47-pr52230.patch Untested fix.
Author: jakub Date: Mon Feb 13 19:57:24 2012 New Revision: 184165 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184165 Log: PR middle-end/52230 * omp-low.c (expand_omp_for): If a static schedule without chunk size has NULL region->cont, force fd.chunk_size to be integer_zero_node. Modified: trunk/gcc/ChangeLog trunk/gcc/omp-low.c
Fixed for trunk, might backport it to 4.[654] eventually, but it isn't high priority, given that it doesn't make any sense to have non-fallthru omp for body, using omp for then isn't really appropriate.
Author: jakub Date: Tue Feb 14 23:32:39 2012 New Revision: 184240 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184240 Log: Backported from mainline 2012-02-13 Jakub Jelinek <jakub@redhat.com> PR middle-end/52230 * omp-low.c (expand_omp_for): If a static schedule without chunk size has NULL region->cont, force fd.chunk_size to be integer_zero_node. Modified: branches/gcc-4_6-branch/gcc/ChangeLog branches/gcc-4_6-branch/gcc/omp-low.c
GCC 4.7.0 is being released, adjusting target milestone.
Fixed for 4.6.3.