https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120286

            Bug ID: 120286
           Summary: [OpenMP] Double free detected when using openmp
           Product: gcc
           Version: 15.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: itou.tetsuya at fujitsu dot com
  Target Milestone: ---

The following program terminated with SIGSEGV.
This does not occur in gfortran-11 and earlier versions, but seems to occur in
gfortran-12 and later versions. It also did not occur with flang or ifort.
This does not occur if -fopenmp is not specified.

---
program main
  implicit none
  type fooPtr_t
   class(foo_t), pointer :: p
  end type fooPtr_t
  type fooPtrStack_t
   class(fooPtr_t), allocatable :: list(:)
  end type fooPtrStack_t
  type foo_t
   integer :: dummy
  end type foo_t
  type(fooPtrStack_t) :: x
  class(foo_t), pointer :: ptr
  integer it, itmax, n, nmax
  nmax = 1
  allocate(x%list(nmax))
  allocate(x%list(nmax)%p)
  itmax = 32
  do it = 1, itmax
!$omp parallel do default(none) private(n,ptr) shared(nmax,x)
   do n = 1, nmax
     ptr => x%list(n)%p
   end do
  end do
  write(*,'(a)') 'done'
end program main
---

Results for 11.4 and 15.1:
https://godbolt.org/z/6f9KvG1av
  • [Bug fortran/120286] New: [Op... itou.tetsuya at fujitsu dot com via Gcc-bugs

Reply via email to