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