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)
  • [Bug fortran/122902] New: [P... damian at archaeologic dot codes via Gcc-bugs

Reply via email to