Hi all,
We've noticed that if you create a derived type with a member variable
and an accessor method, calling that accessor method on a coindexed
object on a remote image results in a segmentation fault at runtime,
as per the example below.
The following program should print "1, 2, 3" twice if run with 2
images. Instead, image 1 prints "1, 2, 3" but image 2 crashes with a
segmentation fault. Note that if you replace "mailbox[1]%stuff()" with
"mailbox[1]%stuff_" then it works correctly.
module container_m
type :: container_t
integer, allocatable :: stuff_(:)
contains
procedure :: stuff
end type
contains
function stuff(self)
class(container_t), intent(in) :: self
integer, allocatable :: stuff(:)
stuff = self%stuff_
end function
end module
program main
use container_m
type(container_t) :: mailbox[*]
if (this_image() == 1) then
allocate(mailbox%stuff_(3))
mailbox%stuff_ = [1, 2, 3]
end if
sync all
print *, mailbox[1]%stuff()
end program
I am using OpenCoarrays 2.9.2 and gfortran 11.1.1.
Thanks everyone,
Harris Snyder