This one is a bit tricky. It passes two arrays to a subroutine, where they are passed on to the intrinsic function dot_product. However, they are passed old-style, without interface information. dot_product expects to receive only new-style arrays, and generates a segfault in the executed program.
This one can't be caught at compile time (at least not without inter-procedural analysis) because it's the caller who determines wether to pass an old-style or a new-style array. $ cat dot_product.f90 program main implicit none real, dimension(2) :: a, b real :: c a = 1. b = -2.3 call foo(a,b,c) print *,c end program main subroutine foo(a,b,c) real, dimension(:), intent(in) :: a, b real, intent(out) :: c c = dot_product(a,b) end subroutine foo $ gfortran dot_product.f90 && ./a.out Segmentation fault $ gfortran -v Reading specs from /home/zfkts/lib/gcc/ia64-unknown-linux-gnu/4.0.0/specs Configured with: ../gcc-4.0-20041205/configure --prefix=/home/zfkts --enable-languages=c,c++,f95 --disable-shared Thread model: posix gcc version 4.0.0 20041205 (experimental) -- Summary: segfault in dot_product with missing interface information Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: libfortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Thomas dot Koenig at online dot de CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18924