https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100071
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I have and see ==3196657== Invalid write of size 8 ==3196657== at 0x401DAF: MAIN__ (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/testsuite/alloc-2.exe) ==3196657== by 0x40204A: main (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/testsuite/alloc-2.exe) ==3196657== Address 0x4f2a560 is 48 bytes inside a block of size 896 free'd ==3196657== at 0x483A9F5: free (vg_replace_malloc.c:538) ==3196657== by 0x401C20: MAIN__ (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/testsuite/alloc-2.exe) ==3196657== by 0x40204A: main (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/testsuite/alloc-2.exe) ==3196657== Block was alloc'd at ==3196657== at 0x4839809: malloc (vg_replace_malloc.c:307) ==3196657== by 0x4CF6CCC: omp_aligned_alloc.part.0 (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/.libs/libgomp.so.1.0.0) ==3196657== by 0x4018E1: MAIN__ (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/testsuite/alloc-2.exe) ==3196657== by 0x40204A: main (in /home/jakub/src/gcc/obj02/x86_64-pc-linux-gnu/libgomp/testsuite/alloc-2.exe) 2021-04-14 Jakub Jelinek <ja...@redhat.com> PR testsuite/100071 * testsuite/libgomp.fortran/alloc-1.F90: Call c_f_pointer after last cp = omp_alloc with cp, p arguments instead of cq, q and call c_f_pointer after last cq = omp_alloc with cq, q. --- libgomp/testsuite/libgomp.fortran/alloc-1.F90.jj 2020-07-18 00:05:57.245601544 +0200 +++ libgomp/testsuite/libgomp.fortran/alloc-1.F90 2021-04-14 10:35:19.425186364 +0200 @@ -155,12 +155,13 @@ cp = omp_alloc (ONEoFIVE, & & omp_null_allocator) if (mod (transfer (cp, intptr), 32_c_intptr_t) /= 0) stop 17 - call c_f_pointer (cq, q, [ONEoFIVE & + call c_f_pointer (cp, p, [ONEoFIVE & & / c_sizeof (i)]) p(1) = 5 p(ONEoFIVE / c_sizeof (i)) = 6 cq = omp_alloc (768_c_size_t, omp_null_allocator) if (mod (transfer (cq, intptr), 128_c_intptr_t) /= 0) stop 18 + call c_f_pointer (cq, q, [768 / c_sizeof (i)]) q(1) = 7 q(768 / c_sizeof (i)) = 8 if (c_associated (omp_alloc (768_c_size_t, omp_null_allocator))) & seems to fix it.