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.

Reply via email to