Encountering segfault when compiling a very simple .F and "use" -ing a certain .mod file.
Encountered crash on gfortran 4.1.0 and 4.1.1. Patch below is against 4.1.1. I've pared down the .mod file from it's original size; I've removed as much as I can such that the crash occurs. Note that the crash doesn't happen if "('imaxf' 0 50 )" is removed from the module. Crash occurs because e->symtree is NULL in resolve_ref()/find_array_spec(). Patch to fix crash (needs review; I don't know gcc/gfortran): vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv --- resolve.c.orig 2006-08-15 12:48:43.000000000 -0500 +++ resolve.c 2006-08-15 12:48:57.000000000 -0500 @@ -2555,6 +2555,10 @@ { gfc_symbol *sym; + /* added extra check before resolve_ref() -ADS */ + if (e->symtree == NULL) + return FAILURE; + if (e->ref && resolve_ref (e) == FAILURE) return FAILURE; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fortran source to compile, to generate crash: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv subroutine sub( myint ) use domdec use bdy_comm return end ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Compile with: gfortran -c -o sub.o sub.F Module file used to generate crash (has been simplified from original version): vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv GFORTRAN module created from domdec.F on Fri Jul 28 14:56:20 2006 If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () ()) () () (('mpipriv1' 2 1) ('mpiprivc' 3 1) ('mpipriv2' 4 1)) () (106 'mpi_argv_null' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN DIMENSION IN_COMMON) (CHARACTER 1 ((CONSTANT (INTEGER 4 ()) 0 '1'))) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '1')) 0 () ()) 3 'mpi_argvs_null' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN DIMENSION IN_COMMON) (CHARACTER 1 ((CONSTANT (INTEGER 4 ()) 0 '1'))) 0 106 () (2 EXPLICIT (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '1')) 0 () ()) 2 'mpi_bottom' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IN_COMMON) (INTEGER 4 ()) 0 107 () () 0 () ()) 50 'imaxf' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN ALLOCATABLE DIMENSION) (INTEGER 4 ()) 0 0 () (1 DEFERRED () ()) 0 () ()) 212 'mpi_errcodes_ignore' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN DIMENSION IN_COMMON) (INTEGER 4 ()) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '1')) 0 () ()) 107 'mpi_in_place' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IN_COMMON) (INTEGER 4 ()) 0 226 () () 0 () ()) 4 'mpi_statuses_ignore' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN DIMENSION IN_COMMON) (INTEGER 4 ()) 0 212 () (2 EXPLICIT (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '5') (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '1')) 0 () ()) 226 'mpi_status_ignore' 'domdec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN DIMENSION IN_COMMON) (INTEGER 4 ()) 0 0 () (1 EXPLICIT (CONSTANT (INTEGER 4 ()) 0 '1') (CONSTANT (INTEGER 4 ()) 0 '5')) 0 () ()) ) ('imaxf' 0 50 ) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Summary: Crash in resolve.c - related to contents of .mod Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: adsspamtrap01 at yahoo dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28735