runtime segmentation fault for formatted write statement

Christopher S. Talley chris.talley@cfdrc.com
Tue Apr 9 16:34:00 GMT 2019


I have a legacy FORTRAN code that compiles on Compaq Visual FORTRAN 6.6, Intel FORTRAN, and g95. I am trying to get this code to build with gfortran-8.3.0 and I keep getting the following runtime error:

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0xf7f82fff in ???
#1  0x805d238 in format_hash
	at ../../../../gcc-8.3.0/libgfortran/io/format.c:128
#2  0x805d238 in find_parsed_format
	at ../../../../gcc-8.3.0/libgfortran/io/format.c:163
#3  0x804e4c8 in data_transfer_init
	at ../../../../gcc-8.3.0/libgfortran/io/transfer.c:2842
#4  0x8048b38 in MAIN__
	at debug/example.for:6
#5  0x8048b8a in main
	at debug/example.for:34
Segmentation fault (core dumped)

I’ve created the following example that reproduces the problem when compiled as follows:
> gfortran example.for -std=gnu -cpp -m32 -fdefault-real-8 -O0 -g3 -malign-double -ftracer -fcaller-saves --static -o example

=============================
C  example.for

       PROGRAM MAIN

C     SUPPLY HEADER INFORMATION
        WRITE(*,10)

C********************************************************************
10    FORMAT(12X,'*************************************************',/,
     &   12X,'             X X X X X (XXXXXXX XXX)              ',/,
     &   12X,'     XXXXXXXXXXX XXXXX XXXXXX XXXXXXXXXX XXXXXXX  ',/,
     &   12X,'                XXXXXXXXX XXXX                      ',/,
C     
#ifdef __G95__
     &   12X,'            Built with G95 Compiler               ',/,
#endif
#ifdef __GFORTRAN__
     &   12X,'            Built with GFORTRAN Compiler          ',/,
#endif
#ifdef __INTEL_COMPILER
     &   12X,'           Built with Intel Compiler              ',/,
#endif
#ifdef __VF_VER
     &   12X,'         Built with CVF 6.6 Compiler              ',/,
#endif     
     &   12X,'                                                  ',/,
     &   12X,'   XXXXXXXXX XX XXXX/XXXXXXXX XXXXX XXXXXX XXXXXX ',/,
     &   12X,'   XXXXXXXXX (X) XX XXXXXXXX XXXXX XXXXXX XXXXXX  ',/,
     &   12X,'                                                  ',/,
     &   12X,' X XXXXXXXXXXX XXXXXXXX XXXXXXX XX XXXXXXXXX XXXX ',/,
     &   12X,' XXXXX, XXXXXXXXX, XXXXXXXXXXXX XXX XXXXXXXXXXXXXX',/,
     &   12X,' XX X XXXX XXXXXXX.                               ',/,
     &   12X,'*************************************************',//)
       END PROGRAM
=============================

Thanks,

Chris



More information about the Fortran mailing list