http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59678
--- Comment #9 from Hossein Talebi <talebi.hossein at gmail dot com> --- I looked at it in more details by overloading the automatic assignment (=) with a self written one and I found the problem. This is a minimalistic example that the program crashes. Funny thing is that when I put MAX_PART_FEM=2, it runs but not with any other number. I use ubuntu 13.1, GCC 4.8.1. module module1 integer,parameter :: MAX_PART_FEM=32 type ty_type3 integer a,b integer, allocatable :: vec1(:) end type ty_type3 type ptr_ty_part_fem type(ty_type3), allocatable :: OBJ end type ptr_ty_part_fem type ty_type2 type(ptr_ty_part_fem) :: parts_fem(MAX_PART_FEM) integer :: a2=1 end type ty_type2 end module module1 program hello use module1 implicit none type(ty_type2):: m2, m3 m3=m2 print *,m2%a2 end program