https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79230
janus at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Known to work| |6.2.0
Summary|[7 Regression] Run time |[7 Regression] [OOP] Run
|error: malloc on valid code |time error: double free or
| |corruption
Known to fail| |7.0
--- Comment #7 from janus at gcc dot gnu.org ---
(In reply to Jürgen Reuter from comment #5)
> Here is the promised reduced test case, 80 lines, and I do believe that this
> is most likely causing the issues of all our 250 failing tests (hopefully).
> Attached and plain:
I'm afraid this example is invalid, because it accesses element 7 of an array
with size 1, so the runtime error ("free(): invalid pointer") is probably
correct, even though it does not appear with gfortran 6.2.
However, when fixing that (i.e. turning the '7' into a '1'), the runtime error
turns into:
Error in `./a.out': double free or corruption (fasttop): 0x0000000002168ff0 ***
Here is a further reduced test case for that error:
program main_ut
implicit none
type :: data_t
character, dimension(:), allocatable :: name
end type
type :: t1_t
character, dimension(:), allocatable :: name
class(data_t), pointer :: width_data
end type
call evaluator
contains
subroutine evaluator
type(data_t), target :: par_real
type(t1_t) :: field
field%width_data => par_real
end subroutine
end
As with the previous case, there is no runtime error with gfortran 6.2, so it's
a regression.