It looks like a derived-type variable, containing an allocatable array and a variable set to an initial value, picks some random number instead of the initial value, unless it has the "save" attribute. The following piece of code demonstrates the problem: the only difference between the first and the second subroutine is the presence of the save attribute to t. No problem if "t%a" is a fixed-dimension array. "t%n" should be 1023.
! program boh ! call mah0 call mah1 ! end program boh ! subroutine mah0 ! type mix_type real(8), allocatable :: a(:) integer :: n=1023 end type mix_type type(mix_type) :: t ! allocate(t%a(1)) t%a=3.1415926 print *, 'n,a=',t%n,t%a deallocate(t%a) ! end subroutine mah0 ! subroutine mah1 ! type mix_type real(8), allocatable :: a(:) integer :: n=1023 end type mix_type type(mix_type), save :: t ! allocate(t%a(1)) t%a=3.1415926 print *, 'n,a=',t%n,t%a deallocate(t%a) ! end subroutine mah1 gfortran -v Using built-in specs. Target: i386-apple-darwin8.10.1 Configured with: /tmp/gfortran-20071231/ibin/../gcc/configure --prefix=/usr/local/gfortran --enable-languages=c,fortran --with-gmp=/tmp/gfortran-20071231/gfortran_libs --enable-bootstrap Thread model: posix gcc version 4.3.0 20071231 (experimental) [trunk revision 131236] (GCC) $ gfortran boh.f90 $ ./a.out n,a= 2123354 3.1415925025939941 n,a= 1023 3.1415925025939941 $ gfortran -O3 boh.f90 $ ./a.out n,a= -1 3.1415925025939941 n,a= 1023 3.1415925025939941 -- Summary: Derived-type initialization ignored unless save attribute is present Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: p dot giannozzi at fisica dot uniud dot it GCC build triplet: i386-apple-darwin8.10.1 GCC host triplet: i386-apple-darwin8.10.1 GCC target triplet: i386-apple-darwin8.10.1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34704