https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122902
Bug ID: 122902
Summary: [PDT] seg fault on assigning composite PDT array
section to allocatable array
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: damian at archaeologic dot codes
Target Milestone: ---
$ cat reproducer.F90
module input_output_pair_m
implicit none
type tensor_t(k)
integer, kind :: k = kind(1.)
real(k), allocatable :: values_(:)
end type
type input_output_pair_t(k)
integer, kind :: k = kind(1.)
type(tensor_t(k)) inputs_, expected_outputs_
end type
interface
type(input_output_pair_t) elemental module function
input_output_pair(inputs, expected_outputs)
implicit none
type(tensor_t), intent(in) :: inputs, expected_outputs
end function
end interface
end module
submodule(input_output_pair_m) input_output_pair_s
implicit none
contains
module procedure input_output_pair
input_output_pair%inputs_ = inputs
input_output_pair%expected_outputs_ = expected_outputs
end procedure
end submodule
use input_output_pair_m
implicit none
type(tensor_t), allocatable :: inputs(:), outputs(:)
type(input_output_pair_t), allocatable :: input_output_pairs(:),
mini_batch(:)
integer i
inputs = [(tensor_t([0.]), i=1,7)]
outputs = inputs
input_output_pairs = input_output_pair(inputs, outputs)
mini_batch = input_output_pairs(1:1)
end
$ gfortran reproducer.F90
$ ./a.out
free(): invalid pointer
Program received signal SIGABRT: Process abort signal.
Backtrace for this error:
#0 0x7f03a3be351f in ???
at ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
#1 0x7f03a3c379fc in __pthread_kill_implementation
at ./nptl/pthread_kill.c:44
#2 0x7f03a3c379fc in __pthread_kill_internal
at ./nptl/pthread_kill.c:78
#3 0x7f03a3c379fc in __GI___pthread_kill
at ./nptl/pthread_kill.c:89
#4 0x7f03a3be3475 in __GI_raise
at ../sysdeps/posix/raise.c:26
#5 0x7f03a3bc97f2 in __GI_abort
at ./stdlib/abort.c:79
#6 0x7f03a3c2a676 in __libc_message
at ../sysdeps/posix/libc_fatal.c:156
#7 0x7f03a3c41cfb in malloc_printerr
at ./malloc/malloc.c:5664
#8 0x7f03a3c43a43 in _int_free
at ./malloc/malloc.c:4439
#9 0x7f03a3c46452 in __GI___libc_free
at ./malloc/malloc.c:3391
#10 0x4044da in ???
#11 0x40455b in ???
#12 0x7f03a3bcad8f in __libc_start_call_main
at ../sysdeps/nptl/libc_start_call_main.h:58
#13 0x7f03a3bcae3f in __libc_start_main_impl
at ../csu/libc-start.c:392
#14 0x4010b4 in ???
#15 0xffffffffffffffff in ???
Aborted (core dumped)
$ gfortran --version
GNU Fortran (GCC) 16.0.0 20251125 (experimental)