public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/104900] New: segfault with parameterized derived type with kind parameter and allocatable component
@ 2022-03-13 5:42 a.shahmoradi at gmail dot com
0 siblings, 0 replies; only message in thread
From: a.shahmoradi at gmail dot com @ 2022-03-13 5:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104900
Bug ID: 104900
Summary: segfault with parameterized derived type with kind
parameter and allocatable component
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: a.shahmoradi at gmail dot com
Target Milestone: ---
Created attachment 52617
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52617&action=edit
sample source code
The attached file contains a is a valid Fortran standard program with
parameterized derived types with kind type parameter (no len parameter) and an
allocatable component. However, gfortran yields a runtime segfault with this
code,
```
use, intrinsic :: iso_fortran_env!, only: real64, int64
integer, parameter :: RK1 = real_kinds(1)
integer, parameter :: RK2 = real_kinds(2)
type :: Container_type(RK)
integer, kind :: RK = RK1
real(RK), allocatable :: value(:)
end type
type(Container_type(RK1)), allocatable :: List(:)
interface wrap
procedure :: wrap_RK1, wrap_RK2
end interface
List = wrap([1.,2.,3.,4.,5.,6.])
print *, List(1)%value
print *, List(2)%value
contains
function wrap_RK1(array) result(List)
real(RK1), intent(in) :: array(:)
type(Container_type(RK1)), allocatable :: List(:)
allocate(List(2))
List(1)%value = array(1:size(array)/2)
List(2)%value = array(size(array)/2 + 1 : size(array))
end function
function wrap_RK2(array) result(List)
real(RK2), intent(in) :: array(:)
type(Container_type(RK2)), allocatable :: List(:)
allocate(List(2))
List(1)%value = array(1:size(array)/2)
List(2)%value = array(size(array)/2 + 1 : size(array))
end function
end
```
Here is the error message,
```
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7f1e57dcc8d2 in ???
#1 0x7f1e57dcba65 in ???
#2 0x7f1e57a430bf in ???
#3 0x401927 in wrap_rk1
at /app/example.f90:27
#4 0x4012f4 in MAIN__
at /app/example.f90:17
#5 0x401bfc in main
at /app/example.f90:19
```
There segfault happen where the automatic allocation of the `value` component
occurs in the procedures. Here is an online test:
https://godbolt.org/z/8n5fs44sa
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-03-13 5:42 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-13 5:42 [Bug fortran/104900] New: segfault with parameterized derived type with kind parameter and allocatable component a.shahmoradi at gmail dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).