This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/28735] New: Crash in resolve.c - related to contents of .mod


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]