Hi,

the following legal program crashes with a segfault at runtime:

program gfcbug60
  implicit none

  integer :: i, j
  integer, allocatable :: mm(:)
  logical, allocatable :: mask(:)

  do i = 1, 0, -1
     print *, "i =", j
     allocate (mm(i), mask(i))
     mm(:) = 1
     mask(:) = (mm == 0)
     j = count (mask)
     print *, "j =", j
     print *, "mm =", mm
     print *, "mask =", mask
     ! gfortran runtime crash for i=j=0: bug in pack for 0-sized arrays!
     print *, "pack (mm, mask) =", pack (mm, mask)
     deallocate (mm, mask)
     print *
  end do
end program gfcbug60

% gfc gfcbug60.f90 && ./a.out
 i =           0
 j =           0
 mm =           1
 mask = F
 pack (mm, mask) =

 i =           0
 j =           0
 mm =
 mask =
Segmentation fault (core dumped)


-- 
           Summary: PACK crashes on zero-sized arrays
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: anlauf at gmx dot de
  GCC host triplet: i686-pc-linux-gnu


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

Reply via email to