http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46978

           Summary: TRANSPOSE corrupts structure and memory
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: m.a.hul...@tue.nl


Created attachment 22783
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22783
the source files and Makefile

I found a serious issue with the TRANSPOSE intrinsic function, possibly when
combined with the reshape intrinsic.
I tried to create a small sample program, but I was unsuccessful.
Therefore I decided to start from the failing big program and made it as small
as possible but still showing the issue. It turned out to be very tricky and
there are still 4275 lines of code left.
However, all of the code in mods.f90 is necessary to build the structure mesh
and is fine. The problem appears at a single line in the small main program
after building the mesh structure.

The corruption is related to the statement:

   mesh%objects(1)%coor = transpose ( reshape ( a, (/2,nno/) ) )

at line 113 in the file mainprog.f90, which corrupt other parts of the
structure mesh. In particular the parts mesh%blocks(2)%elements and
mesh$blocks(3)%elements are overwritten. For example:
mesh%blocks(3)%elements before:
          1           1           1           1           1          21
22          23          24          25
mesh%blocks(3)%elements after:
          1           1           1           1           1          21
22          23           0  1072693248

If I remove the stop statement at line 124, I also get a message:
*** glibc detected *** mainprog: double free or corruption (!prev):
0x00000000008fe440 ***
with a corresponding backtrace.

If I uncomment lines 5, 6 and 7 in mainprog.f90, and basically
replacing the intrinsic transpose with my own version, the problem is gone.

Note, that it runs fine with gfortran from 6th June 2010 (from Tobias Burnus’
homepage), g95, ifort, Lahey/Fujitsu and nagfor.

Reply via email to