[Bug fortran/88399] program segmentation faults when out-of-memory

2018-12-13 Thread schorkl72 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88399

Lukas Schork  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID

--- Comment #3 from Lukas Schork  ---
Tested with 8.2.0, where it works correctly.

[Bug fortran/88399] New: program segmentation faults when out-of-memory

2018-12-07 Thread schorkl72 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88399

Bug ID: 88399
   Summary: program segmentation faults when out-of-memory
   Product: gcc
   Version: 5.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: schorkl72 at gmail dot com
  Target Milestone: ---

Created attachment 45176
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45176&action=edit
wrapper for malloc() to simulate out-of-memory

The following program segmentation faults if allocate is unsuccessful:

program main
  type initialized
 integer :: i = 42
  end type

  type(initialized), pointer :: ptr
  integer :: st

  allocate(ptr, stat=st)
  if (st /= 0) stop "allocation failed"
end

To test it, compile the code snippet (say main.f90) and the attached malloc
wrapper as:

$ gfortran -c main.f90
$ gcc -c wrap_malloc.c
$ gfortran -Wl,--wrap=malloc main.o wrap_malloc.o
$ ./a.out
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7EFEF00CBE08
#1  0x7EFEF00CAF90
#2  0x7EFEEFD1B4AF
#3  0x40073A in MAIN__ at main.f90:?
Segmentation fault

The problem is the default initialization (= 42) of the derived type component.
Without it, the program runs correctly and stops with "allocation failed".