------- Comment #1 from dfranke at gcc dot gnu dot org 2007-06-29 21:00 ------- Bill, thanks for your report! Here's a slightly simplified testcase:
$> cat pr32550.f90 integer, pointer, save :: ptr integer, target :: targ !$omp threadprivate(ptr) !$omp parallel shared(targ) !$omp single ptr => targ !$omp end single copyprivate(ptr) !$omp end parallel END The testcase compiles, but crashes on execution (SIGSEGV). If the COPYPRIVATE-clause or the pointer/target attributes are removed, the resulting binary does not crash. Output from gdb is not very helpful, but valgrind gives: ==32677== Thread 2: ==32677== Invalid write of size 4 ==32677== at 0x80486FE: MAIN__.omp_fn.0 (pr32550.f90:9) ==32677== by 0x40FAFFC: gomp_thread_start (team.c:108) ==32677== by 0x410F2C0: start_thread (in /lib/libpthread-2.5.so) ==32677== by 0x41D8FAD: clone (in /lib/libc-2.5.so) ==32677== Address 0x0 is not stack'd, malloc'd or (recently) free'd ==32677== ==32677== Process terminating with default action of signal 11 (SIGSEGV) ==32677== Access not within mapped region at address 0x0 ==32677== at 0x80486FE: MAIN__.omp_fn.0 (pr32550.f90:9) ==32677== by 0x40FAFFC: gomp_thread_start (team.c:108) ==32677== by 0x410F2C0: start_thread (in /lib/libpthread-2.5.so) ==32677== by 0x41D8FAD: clone (in /lib/libc-2.5.so) Adding Jakub as CC. -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dfranke at gcc dot gnu dot | |org, jakub at gcc dot gnu | |dot org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 GCC build triplet|x86_64-suse-linux | GCC host triplet|x86_64-suse-linux | GCC target triplet|x86_64-suse-linux | Keywords| |openmp Known to fail| |4.2.1 4.3.0 Last reconfirmed|0000-00-00 00:00:00 |2007-06-29 21:00:42 date| | Summary|THE COPYPRIVATE CLAUSE FAILS|openmp: COPYPRIVATE of |TO COPY THE PTR AT THE END |pointer variables fails |OF A 'SINGLE' CONSTRUCT | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32550