The following code runs normally in ifort/ifx
, but reports an error in gfortran/flang-old
:
program main
implicit none
associate(txt_file => get_strings())
print *, txt_file
end associate
contains
function get_strings()
character(:), allocatable :: get_strings
get_strings = 'a.txt'
end function get_strings
end program main
Seems to be a bug in gfortran/flang-old
? Using associate(txt_file => (get_strings()))
seems to work.
>> ifort main.f90 && ./a.out
a.txt
>> gfortran main.f90 && ./a.out
a.txt
free(): double free detected in tcache 2
Program received signal SIGABRT: Process abort signal.
Backtrace for this error:
#0 0x7f5acff58ad0 in ???
#1 0x7f5acff57c35 in ???
#2 0x7f5acfd4f51f in ???
at ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
#3 0x7f5acfda3a7c in __pthread_kill_implementation
at ./nptl/pthread_kill.c:44
#4 0x7f5acfda3a7c in __pthread_kill_internal
at ./nptl/pthread_kill.c:78
#5 0x7f5acfda3a7c in __GI___pthread_kill
at ./nptl/pthread_kill.c:89
#6 0x7f5acfd4f475 in __GI_raise
at ../sysdeps/posix/raise.c:26
#7 0x7f5acfd357f2 in __GI_abort
at ./stdlib/abort.c:79
#8 0x7f5acfd966f5 in __libc_message
at ../sysdeps/posix/libc_fatal.c:155
#9 0x7f5acfdadd7b in malloc_printerr
at ./malloc/malloc.c:5664
#10 0x7f5acfdb012a in _int_free
at ./malloc/malloc.c:4473
#11 0x7f5acfdb24d2 in __GI___libc_free
at ./malloc/malloc.c:3391
#12 0x55aa397cb387 in ???
#13 0x55aa397cb3c7 in ???
#14 0x7f5acfd36d8f in __libc_start_call_main
at ../sysdeps/nptl/libc_start_call_main.h:58
#15 0x7f5acfd36e3f in __libc_start_main_impl
at ../csu/libc-start.c:392
#16 0x55aa397cb104 in ???
#17 0xffffffffffffffff in ???