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

            Bug ID: 116679
           Summary: Memory leak when creating derived type instance with
                    allocatable component within array expression
           Product: gcc
           Version: 14.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: baradi09 at gmail dot com
  Target Milestone: ---

Issue:

GIVEN a derived type with an allocatable component
WHEN  an instance of this type is created within an array expression
THEN  the allocatable component is not deallocated when the instance goes out
of scope

Minimal working example:

program testprog
  implicit none

  type :: wrapper
    integer, allocatable :: val
  end type wrapper

  block
    type(wrapper) :: items(1)
    items = [wrapper(1)]
  end block

end program testprog

Compiling:

gfortran -Og -g3 -fsanitize=address memoryleak.f90

Obtained result:

When the executable finishes, AddressSanitizer reports unallocated memory

./a.out                                           

=================================================================
==104059==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7f012e4b1cbc in malloc
../../../../libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x55717df5c307 in testprog
/home/aradi/ramdisk/BUILD/fortuno/memoryleak.f90:10
    #2 0x7f012e11d14a in __libc_start_main_alias_1 (/lib64/libc.so.6+0x2a14a)
(BuildId: 77c77fee058b19c6f001cf2cb0371ce3b8341211)
    #3 0x55717df5c14d in _start
(/media/aradi/ramdisk/BUILD/fortuno/a.out+0x114d)

SUMMARY: AddressSanitizer: 4 byte(s) leaked in 1 allocation(s).

Expected result:

Memory should be properly deallocated at the end of the "block" construct.


Note: This is an extracted minimal working example of the issue reported for
the Fortuno unit testing system
(https://github.com/fortuno-repos/fortuno/issues/22)

Reply via email to