This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/28735] New: Crash in resolve.c - related to contents of .mod
- From: "adsspamtrap01 at yahoo dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Aug 2006 18:33:41 -0000
- Subject: [Bug fortran/28735] New: Crash in resolve.c - related to contents of .mod
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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