The attached code produces an error at runtime:

System:
Linux 2.6.27-gentoo-r8 x86_64 AMD Turion(tm) 64 Mobile Technology ML-32
AuthenticAMD GNU/Linux

$ gfortran bug.f90 -o bug

$ ./bug 
*** glibc detected *** ./bug: double free or corruption (fasttop):
0x0000000000603fb0 ***
======= Backtrace: =========
/lib/libc.so.6[0x7fc237a7f468]
/lib/libc.so.6(cfree+0x76)[0x7fc237a80fa6]
./bug[0x40124f]
./bug[0x40129f]
/lib/libc.so.6(__libc_start_main+0xe6)[0x7fc237a2a5c6]
./bug[0x4006c9]
======= Memory map: ========
00400000-00402000 r-xp 00000000 03:06 382295                            
/home/marco/CODICI/repository/LDG-H/tags/LDGH-gfortranbug/bug/bug
00601000-00602000 r--p 00001000 03:06 382295                            
/home/marco/CODICI/repository/LDG-H/tags/LDGH-gfortranbug/bug/bug
00602000-00603000 rw-p 00002000 03:06 382295                            
/home/marco/CODICI/repository/LDG-H/tags/LDGH-gfortranbug/bug/bug
00603000-00624000 rw-p 00603000 00:00 0                                  [heap]
7fc230000000-7fc230021000 rw-p 7fc230000000 00:00 0 
7fc230021000-7fc234000000 ---p 7fc230021000 00:00 0 
7fc237a0c000-7fc237b57000 r-xp 00000000 03:06 5867248                   
/lib64/libc-2.9.so
7fc237b57000-7fc237d57000 ---p 0014b000 03:06 5867248                   
/lib64/libc-2.9.so
7fc237d57000-7fc237d5b000 r--p 0014b000 03:06 5867248                   
/lib64/libc-2.9.so
7fc237d5b000-7fc237d5c000 rw-p 0014f000 03:06 5867248                   
/lib64/libc-2.9.so
7fc237d5c000-7fc237d61000 rw-p 7fc237d5c000 00:00 0 
7fc237d61000-7fc237d77000 r-xp 00000000 03:06 1525564                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgcc_s.so.1
7fc237d77000-7fc237f76000 ---p 00016000 03:06 1525564                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgcc_s.so.1
7fc237f76000-7fc237f77000 r--p 00015000 03:06 1525564                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgcc_s.so.1
7fc237f77000-7fc237f78000 rw-p 00016000 03:06 1525564                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgcc_s.so.1
7fc237f78000-7fc237ffa000 r-xp 00000000 03:06 5966534                   
/lib64/libm-2.9.so
7fc237ffa000-7fc2381f9000 ---p 00082000 03:06 5966534                   
/lib64/libm-2.9.so
7fc2381f9000-7fc2381fa000 r--p 00081000 03:06 5966534                   
/lib64/libm-2.9.so
7fc2381fa000-7fc2381fb000 rw-p 00082000 03:06 5966534                   
/lib64/libm-2.9.so
7fc2381fb000-7fc2382e0000 r-xp 00000000 03:06 1525566                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgfortran.so.3.0.0
7fc2382e0000-7fc2384e0000 ---p 000e5000 03:06 1525566                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgfortran.so.3.0.0
7fc2384e0000-7fc2384e1000 r--p 000e5000 03:06 1525566                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgfortran.so.3.0.0
7fc2384e1000-7fc2384e2000 rw-p 000e6000 03:06 1525566                   
/home/marco/PROGI/bin-pack/gcc-trunk/lib64/libgfortran.so.3.0.0
7fc2384e2000-7fc2384e3000 rw-p 7fc2384e2000 00:00 0 
7fc2384e3000-7fc238500000 r-xp 00000000 03:06 5867285                   
/lib64/ld-2.9.so
7fc2386d4000-7fc2386d7000 rw-p 7fc2386d4000 00:00 0 
7fc2386fd000-7fc2386ff000 rw-p 7fc2386fd000 00:00 0 
7fc2386ff000-7fc238700000 r--p 0001c000 03:06 5867285                   
/lib64/ld-2.9.so
7fc238700000-7fc238701000 rw-p 0001d000 03:06 5867285                   
/lib64/ld-2.9.so
7fff406eb000-7fff40700000 rw-p 7ffffffea000 00:00 0                     
[stack]
7fff407fe000-7fff407ff000 r-xp 7fff407fe000 00:00 0                      [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                 
[vsyscall]
Aborted



module mod_all

 implicit none
 public :: t2, init, fun

 private

 type t1
   integer, allocatable :: x(:)
 end type t1

 type t2
   type(t1), allocatable :: y(:)
 end type t2

contains

 pure function init() result(p)
  type(t2) :: p
   allocate(p%y(1))
   allocate(p%y(1)%x(1))
   p%y(1)%x(1) = 0
 end function init

 pure function fun(m) result(q)
  type(t1), intent(in) :: m
  type(t2) :: q
 end function fun

end module mod_all


program main

 use mod_all, only: t2, init, fun

 implicit none

 type(t2) :: q, p

 p = init()
 q = fun(p%y(1))

end program main


-- 
           Summary: *** glibc detected *** double free or corruption
                    (fasttop) with derived types with allocatable components
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mrestelli at gmail dot com
 GCC build triplet: Configured with: .configure --enable-languages=c,fortran
                    --enabl
  GCC host triplet: gcc version 4.5.0 20090717 (experimental) (GCC)
GCC target triplet: Target: x86_64-unknown-linux-gnu


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

Reply via email to