Derived-type co-array error if nested allocatable components

Derived-type co-array error if nested allocatable components

flying_hermes's picture

Hi,

I'm using the following version of ifort:

$ ifort -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.1.1.163 Build 20130313
Copyright (C) 1985-2013 Intel Corporation.  All rights reserved.
FOR NON-COMMERCIAL USE ONLY

I've found a error when using a derived-type co-array which has a two-level nested allocatable component.

Runing the code with the "-coarray-num-images=1" option gives:

$ make clean; make; ./a.out
ifort -coarray -coarray-num-images=1 -c mesh_class.f90 -o mesh_class.o
ifort -coarray -coarray-num-images=1 -c main.f90 -o main.o
ifort -coarray -coarray-num-images=1 main.o mesh_class.o -o a.out
[Main]:1/1:             Starting
[Main]:1/1:             Calling Construct_Mesh
  [Construct_Mesh]:1/1: Entering
  [Construct_Mesh]:1/1: This%NBlock = 1
  [Construct_Mesh]:1/1: iBlock = 1   This%Block(iBlock)%Nx = 2   This%Block(iBlock)%Ny = 3   This%Block(iBlock)%NVertex = 6
  [Construct_Mesh]:1/1: iBlock = 1   i = 1   j = 1   This%Block(iBlock)%Xv(i,j) = 1
  [Construct_Mesh]:1/1: iBlock = 1   i = 2   j = 1   This%Block(iBlock)%Xv(i,j) = 2
  [Construct_Mesh]:1/1: iBlock = 1   i = 1   j = 2   This%Block(iBlock)%Xv(i,j) = 3
  [Construct_Mesh]:1/1: iBlock = 1   i = 2   j = 2   This%Block(iBlock)%Xv(i,j) = 4
  [Construct_Mesh]:1/1: iBlock = 1   i = 1   j = 3   This%Block(iBlock)%Xv(i,j) = 5
  [Construct_Mesh]:1/1: iBlock = 1   i = 2   j = 3   This%Block(iBlock)%Xv(i,j) = 6
  [Construct_Mesh]:1/1: Printing local data
  [Construct_Mesh]:1/1: i =   1   size(This%Block)            =   1
  [Construct_Mesh]:1/1: i =   1   allocated(This%Block(1)%Xv) =   T
  [Construct_Mesh]:1/1: i =   1   This%Block(1)%Nx            =   2   This%Block(1)%Ny           =   3
  [Construct_Mesh]:1/1: i =   1   size(This%Block(1)%Xv,1)    =   2   size(This%Block(1)%Xv,2)   =   3
  [Construct_Mesh]:1/1: i =   1   lbound(This%Block(1)%Xv,1)  =   1   lbound(This%Block(1)%Xv,2) =   1
  [Construct_Mesh]:1/1: i =   1   ubound(This%Block(1)%Xv,1)  =   2   ubound(This%Block(1)%Xv,2) =   3
  [Construct_Mesh]:1/1: i =   1   This%Block(1)%Xv            =     1       2       3       4       5       6
  [Construct_Mesh]:1/1: i =   1   This%Block(1)%Xv(1,1)       =     1
  [Construct_Mesh]:1/1: Printing image data
  [Construct_Mesh]:1/1: i =   1   size(This[i]%Block)            =   1
  [Construct_Mesh]:1/1: i =   1   allocated(This[i]%Block(1)%Xv) =   T
  [Construct_Mesh]:1/1: i =   1   This[i]%Block(1)%Nx            =   2   This[i]%Block(1)%Ny           =   3
  [Construct_Mesh]:1/1: i =   1   size(This[i]%Block(1)%Xv,1)    =   2   size(This[i]%Block(1)%Xv,2)   =   2
  [Construct_Mesh]:1/1: i =   1   lbound(This[i]%Block(1)%Xv,1)  =   1   lbound(This[i]%Block(1)%Xv,2) =   1
  [Construct_Mesh]:1/1: i =   1   ubound(This[i]%Block(1)%Xv,1)  =   2   ubound(This[i]%Block(1)%Xv,2) =   2
  [Construct_Mesh]:1/1: i =   1   This[i]%Block(1)%Xv            =     1       2       3       4       5       6
  [Construct_Mesh]:1/1: i =   1   This%Block(1)%Xv(1,1)          =     1
  [Construct_Mesh]:1/1: Exiting
[Main]:1/1:             Ending

As you can seen, the local data is ok, but when printing the data of image 1 (using the co-index notation "This[i]" with i=1) the data is erroneous: the upper bound of the 2nd dimension is wrong. This can be see by comparing lines 20 and 29 (or 22 and 31).

Although the upper bound is incorrect, the array it-self is correct as showed by lines 23 and 32.

However, when launching the code with more than one image a segmentation fault is encountered when a given image is trying to access the array on an other image.

The output using "-coarray-num-images=2" option is the following:

make clean; make; ./a.out 
ifort -coarray -coarray-num-images=2 -c mesh_class.f90 -o mesh_class.o
ifort -coarray -coarray-num-images=2 -c main.f90 -o main.o
ifort -coarray -coarray-num-images=2 main.o mesh_class.o -o a.out
[Main]:1/2:             Starting
[Main]:1/2:             Calling Construct_Mesh
  [Construct_Mesh]:1/2: Entering
  [Construct_Mesh]:1/2: This%NBlock = 1
  [Construct_Mesh]:1/2: iBlock = 1   This%Block(iBlock)%Nx = 2   This%Block(iBlock)%Ny = 3   This%Block(iBlock)%NVertex = 6
  [Construct_Mesh]:1/2: iBlock = 1   i = 1   j = 1   This%Block(iBlock)%Xv(i,j) = 1
  [Construct_Mesh]:1/2: iBlock = 1   i = 2   j = 1   This%Block(iBlock)%Xv(i,j) = 2
  [Construct_Mesh]:1/2: iBlock = 1   i = 1   j = 2   This%Block(iBlock)%Xv(i,j) = 3
  [Construct_Mesh]:1/2: iBlock = 1   i = 2   j = 2   This%Block(iBlock)%Xv(i,j) = 4
  [Construct_Mesh]:1/2: iBlock = 1   i = 1   j = 3   This%Block(iBlock)%Xv(i,j) = 5
  [Construct_Mesh]:1/2: iBlock = 1   i = 2   j = 3   This%Block(iBlock)%Xv(i,j) = 6
  [Construct_Mesh]:1/2: Printing local data
  [Construct_Mesh]:1/2: i =   1   size(This%Block)            =   1
  [Construct_Mesh]:1/2: i =   1   allocated(This%Block(1)%Xv) =   T
  [Construct_Mesh]:1/2: i =   1   This%Block(1)%Nx            =   2   This%Block(1)%Ny           =   3
  [Construct_Mesh]:1/2: i =   1   size(This%Block(1)%Xv,1)    =   2   size(This%Block(1)%Xv,2)   =   3
  [Construct_Mesh]:1/2: i =   1   lbound(This%Block(1)%Xv,1)  =   1   lbound(This%Block(1)%Xv,2) =   1
  [Construct_Mesh]:1/2: i =   1   ubound(This%Block(1)%Xv,1)  =   2   ubound(This%Block(1)%Xv,2) =   3
  [Construct_Mesh]:1/2: i =   1   This%Block(1)%Xv            =     1       2       3       4       5       6
  [Construct_Mesh]:1/2: i =   1   This%Block(1)%Xv(1,1)       =     1
  [Construct_Mesh]:1/2: Printing image data
  [Construct_Mesh]:1/2: i =   1   size(This[i]%Block)            =   1
  [Construct_Mesh]:1/2: i =   1   allocated(This[i]%Block(1)%Xv) =   T
  [Construct_Mesh]:1/2: i =   1   This[i]%Block(1)%Nx            =   2   This[i]%Block(1)%Ny           =   3
  [Construct_Mesh]:1/2: i =   1   size(This[i]%Block(1)%Xv,1)    =   2   size(This[i]%Block(1)%Xv,2)   =   2
  [Construct_Mesh]:1/2: i =   1   lbound(This[i]%Block(1)%Xv,1)  =   1   lbound(This[i]%Block(1)%Xv,2) =   1
  [Construct_Mesh]:1/2: i =   1   ubound(This[i]%Block(1)%Xv,1)  =   2   ubound(This[i]%Block(1)%Xv,2) =   2
  [Construct_Mesh]:1/2: i =   1   This[i]%Block(1)%Xv            =     1       2       3       4       5       6
  [Construct_Mesh]:1/2: i =   1   This%Block(1)%Xv(1,1)          =     1
[Main]:2/2:             Starting
[Main]:2/2:             Calling Construct_Mesh
  [Construct_Mesh]:2/2: Entering
  [Construct_Mesh]:2/2: This%NBlock = 1
  [Construct_Mesh]:2/2: iBlock = 1   This%Block(iBlock)%Nx = 2   This%Block(iBlock)%Ny = 3   This%Block(iBlock)%NVertex = 6
  [Construct_Mesh]:2/2: iBlock = 1   i = 1   j = 1   This%Block(iBlock)%Xv(i,j) = 1
  [Construct_Mesh]:2/2: iBlock = 1   i = 2   j = 1   This%Block(iBlock)%Xv(i,j) = 2
  [Construct_Mesh]:2/2: iBlock = 1   i = 1   j = 2   This%Block(iBlock)%Xv(i,j) = 3
  [Construct_Mesh]:2/2: iBlock = 1   i = 2   j = 2   This%Block(iBlock)%Xv(i,j) = 4
  [Construct_Mesh]:2/2: iBlock = 1   i = 1   j = 3   This%Block(iBlock)%Xv(i,j) = 5
  [Construct_Mesh]:2/2: iBlock = 1   i = 2   j = 3   This%Block(iBlock)%Xv(i,j) = 6
  [Construct_Mesh]:2/2: Printing local data
  [Construct_Mesh]:2/2: i =   2   size(This%Block)            =   1
  [Construct_Mesh]:2/2: i =   2   allocated(This%Block(1)%Xv) =   T
  [Construct_Mesh]:2/2: i =   2   This%Block(1)%Nx            =   2   This%Block(1)%Ny           =   3
  [Construct_Mesh]:2/2: i =   2   size(This%Block(1)%Xv,1)    =   2   size(This%Block(1)%Xv,2)   =   3
  [Construct_Mesh]:2/2: i =   2   lbound(This%Block(1)%Xv,1)  =   1   lbound(This%Block(1)%Xv,2) =   1
  [Construct_Mesh]:2/2: i =   2   ubound(This%Block(1)%Xv,1)  =   2   ubound(This%Block(1)%Xv,2) =   3
  [Construct_Mesh]:2/2: i =   2   This%Block(1)%Xv            =     1       2       3       4       5       6
  [Construct_Mesh]:2/2: i =   2   This%Block(1)%Xv(1,1)       =     1
  [Construct_Mesh]:2/2: Printing image data
  [Construct_Mesh]:2/2: i =   1   size(This[i]%Block)            =   1
  [Construct_Mesh]:2/2: i =   1   allocated(This[i]%Block(1)%Xv) =   T
  [Construct_Mesh]:2/2: i =   1   This[i]%Block(1)%Nx            =   2   This[i]%Block(1)%Ny           =   3
  [Construct_Mesh]:2/2: i =   1   size(This[i]%Block(1)%Xv,1)    =   2   size(This[i]%Block(1)%Xv,2)   =   2
  [Construct_Mesh]:2/2: i =   1   lbound(This[i]%Block(1)%Xv,1)  =   1   lbound(This[i]%Block(1)%Xv,2) =   1
  [Construct_Mesh]:2/2: i =   1   ubound(This[i]%Block(1)%Xv,1)  =   2   ubound(This[i]%Block(1)%Xv,2) =   2
forrtl: severe (174): SIGSEGV, segmentation fault occurred
In coarray image 2
Image              PC                Routine            Line        Source             
a.out              000000000042D275  Unknown               Unknown  Unknown
a.out              0000000000410903  Unknown               Unknown  Unknown
a.out              0000000000405B49  Unknown               Unknown  Unknown
a.out              000000000040390E  Unknown               Unknown  Unknown
a.out              000000000040377C  Unknown               Unknown  Unknown
libc.so.6          000000310F621735  Unknown               Unknown  Unknown
a.out              0000000000403659  Unknown               Unknown  Unknown
  [Construct_Mesh]:1/2: i =   2   size(This[i]%Block)            =   1
  [Construct_Mesh]:1/2: i =   2   allocated(This[i]%Block(1)%Xv) =   T
  [Construct_Mesh]:1/2: i =   2   This[i]%Block(1)%Nx            =   2   This[i]%Block(1)%Ny           =   3
  [Construct_Mesh]:1/2: i =   2   size(This[i]%Block(1)%Xv,1)    =   2   size(This[i]%Block(1)%Xv,2)   =   2
  [Construct_Mesh]:1/2: i =   2   lbound(This[i]%Block(1)%Xv,1)  =   1   lbound(This[i]%Block(1)%Xv,2) =   1
  [Construct_Mesh]:1/2: i =   2   ubound(This[i]%Block(1)%Xv,1)  =   2   ubound(This[i]%Block(1)%Xv,2) =   2
forrtl: severe (174): SIGSEGV, segmentation fault occurred
In coarray image 1
Image              PC                Routine            Line        Source             
a.out              000000000042D275  Unknown               Unknown  Unknown
a.out              0000000000410903  Unknown               Unknown  Unknown
a.out              0000000000405B49  Unknown               Unknown  Unknown
a.out              000000000040390E  Unknown               Unknown  Unknown
a.out              000000000040377C  Unknown               Unknown  Unknown
libc.so.6          000000310F621735  Unknown               Unknown  Unknown
a.out              0000000000403659  Unknown               Unknown  Unknown

The code is attached.

AttachmentSize
Download nested-derived-type.tar.gz1.6 KB
8 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Annalee (Intel)'s picture

Thank you for reporting this issue. I have escalated it to the developers. The issue number is DPD200244116. I will post any updates on this issue here.

flying_hermes's picture

I've simplified the sample code.

The error does not come from the derived-type nesting.

Program Main
  implicit none
  Type          ::      Mesh_Type
    integer ,allocatable ,dimension(:,:) :: Xv
  End Type
  
  type(Mesh_Type)       ,codimension[*] ::      Mesh
  integer       ,parameter              ::      Nx=2
  integer       ,parameter              ::      Ny=10
  integer                               ::      i, j, ij
  character(:)  ,allocatable            ::      Info
  
  allocate( character(len('[X/X]: ')) :: Info )         
  write(Info,"('[',i1,'/',i1,']: ')") This_Image(),Num_Images()
  
  if ( allocated(Mesh%Xv) ) deallocate(Mesh%Xv)
  allocate( Mesh%Xv(Nx,Ny) )
  forall( i=1:Nx, j=1:Ny ) Mesh%Xv(i,j) = (j-1) * Nx + i
  sync all
  i = 0
  write(*,"(/,a,'Printing local data')") Info
  write(*,"(a,'i = ',i3,3x,'Nx                    = ',i3,3X,'Ny                   = ',i3)") Info, This_Image(), Nx,                Ny
  write(*,"(a,'i = ',i3,3x,'size(Mesh%Xv,1)       = ',i3,3X,'size(Mesh%Xv,2)      = ',i3)") Info, This_Image(), size(Mesh%Xv,1),   size(Mesh%Xv,2)
  write(*,"(a,'i = ',i3,3x,'lbound(Mesh%Xv,1)     = ',i3,3X,'lbound(Mesh%Xv,2)    = ',i3)") Info, This_Image(), lbound(Mesh%Xv,1), lbound(Mesh%Xv,2)
  write(*,"(a,'i = ',i3,3x,'ubound(Mesh%Xv,1)     = ',i3,3X,'ubound(Mesh%Xv,2)    = ',i3)") Info, This_Image(), ubound(Mesh%Xv,1), ubound(Mesh%Xv,2)
  write(*,"(a,'i = ',i3,3x,'Mesh%Xv               = ',*(i3,3x))") Info, This_Image(), Mesh%Xv(:,:)
  sync all
  write(*,"(/,a,'Printing image data')") Info
  do i = 1,Num_Images()
    write(*,"(a,'i = ',i3,3x,'Nx                    = ',i3,3X,'Ny                   = ',i3)") Info, i, Nx,                   Ny
    write(*,"(a,'i = ',i3,3x,'size(Mesh[i]%Xv,1)    = ',i3,3X,'size(Mesh[i]%Xv,2)   = ',i3)") Info, i, size(Mesh[i]%Xv,1),   size(Mesh[i]%Xv,2)
    write(*,"(a,'i = ',i3,3x,'lbound(Mesh[i]%Xv,1)  = ',i3,3X,'lbound(Mesh[i]%Xv,2) = ',i3)") Info, i, lbound(Mesh[i]%Xv,1), lbound(Mesh[i]%Xv,2)
    write(*,"(a,'i = ',i3,3x,'ubound(Mesh[i]%Xv,1)  = ',i3,3X,'ubound(Mesh[i]%Xv,2) = ',i3)") Info, i, ubound(Mesh[i]%Xv,1), ubound(Mesh[i]%Xv,2)
    write(*,"(a,'i = ',i3,3x,'Mesh[i]%Xv            = ',*(i3,3x))") Info, i, Mesh[i]%Xv(:,:)
  end do
  
End Program

The output with a single image is:

ifort -coarray -coarray-num-images=1 main.f90; ./a.out
[1/1]: Printing local data
[1/1]: i =   1   Nx                    =   2   Ny                   =  10
[1/1]: i =   1   size(Mesh%Xv,1)       =   2   size(Mesh%Xv,2)      =  10
[1/1]: i =   1   lbound(Mesh%Xv,1)     =   1   lbound(Mesh%Xv,2)    =   1
[1/1]: i =   1   ubound(Mesh%Xv,1)     =   2   ubound(Mesh%Xv,2)    =  10
[1/1]: i =   1   Mesh%Xv               =   1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20
[1/1]: Printing image data
[1/1]: i =   1   Nx                    =   2   Ny                   =  10
[1/1]: i =   1   size(Mesh[i]%Xv,1)    =   2   size(Mesh[i]%Xv,2)   =   2
[1/1]: i =   1   lbound(Mesh[i]%Xv,1)  =   1   lbound(Mesh[i]%Xv,2) =   1
[1/1]: i =   1   ubound(Mesh[i]%Xv,1)  =   2   ubound(Mesh[i]%Xv,2) =   2
[1/1]: i =   1   Mesh[i]%Xv            =   1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20

Annalee (Intel)'s picture

A fix has been found for this issue. We are currently planning to include it in the next major release which is scheduled for later this year.

Annalee

flying_hermes's picture

Hi,

Here is a similar example which still generate a segmentation fault using the new ifort version 14.0.0 (64). The difference with the previous example is that there is an extra nested-derived-type.

Program Main
  implicit none
  logical ,parameter :: i_Debug_Loc=.true.
  integer ,parameter :: NBlock=1
  integer ,parameter :: Nx=2
  integer ,parameter :: Ny=3
  
  Type                                   ::      Block_Type
    integer                              ::      Nx
    integer                              ::      Ny
    integer ,allocatable ,dimension(:,:) ::      Xv
  End Type
  Type                                                          ::      Mesh_Type
    integer                                                     ::      NBlock
    type(Block_Type) ,allocatable ,dimension(:), codimension[:] ::      Block
  End Type
  type(Mesh_Type) ::      Mesh
  integer         ::      iBlock
  integer         ::      i, j, ij
  
  Mesh%NBlock   =       NBlock
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': Mesh%NBlock = ',i0)") This_Image(),Num_Images(), Mesh%NBlock
  allocate( Mesh%Block(Mesh%NBlock)[*] )
  do iBlock = 1,Mesh%NBlock
    Mesh%Block(iBlock)%Nx       =       Nx
    Mesh%Block(iBlock)%Ny       =       Ny
    write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': iBlock = ',i0,3x,'Mesh%Block(iBlock)%Nx = ',i0,3x,'Mesh%Block(iBlock)%Ny = ',i0)") This_Image(),Num_Images(), iBlock, Mesh%Block(iBlock)%Nx, Mesh%Block(iBlock)%Ny
    allocate( Mesh%Block(iBlock)%Xv(Nx,Ny) )
    do j = 1,Ny
    do i = 1,Nx
      ij        =       (j-1) * Mesh%Block(iBlock)%Nx + i
      Mesh%Block(iBlock)%Xv(i,j)        =       ij
      write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': iBlock = ',i0,3x,'i = ',i0,3x,'j = ',i0,3x,'Mesh%Block(iBlock)%Xv(i,j) = ',g0)") This_Image(),Num_Images(), iBlock, i, j, Mesh%Block(iBlock)%Xv(i,j)
    end do 
    end do 
  end do           
  
  sync all
  i = 0
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': Printing local data')") This_Image(),Num_Images()
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'size(Mesh%Block)               = ',i3)") This_Image(),Num_Images(), i, size( Mesh%Block )
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'allocated(Mesh%Block(1)%Xv)    = ',l3)") This_Image(),Num_Images(), i, allocated( Mesh%Block(1)%Xv )
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'Mesh%Block(1)%Nx               = ',i3,3X,'Mesh%Block(1)%Ny           = ',i3)") This_Image(),Num_Images(), i, Mesh%Block(1)%Nx, Mesh%Block(1)%Ny
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'size(Mesh%Block(1)%Xv,1)       = ',i3,3X,'size(Mesh%Block(1)%Xv,2)   = ',i3)") This_Image(),Num_Images(), i, size(Mesh%Block(1)%Xv,1), size(Mesh%Block(1)%Xv,2)
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'lbound(Mesh%Block(1)%Xv,1)     = ',i3,3X,'lbound(Mesh%Block(1)%Xv,2) = ',i3)") This_Image(),Num_Images(), i, lbound(Mesh%Block(1)%Xv,1), lbound(Mesh%Block(1)%Xv,2)
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'ubound(Mesh%Block(1)%Xv,1)     = ',i3,3X,'ubound(Mesh%Block(1)%Xv,2) = ',i3)") This_Image(),Num_Images(), i, ubound(Mesh%Block(1)%Xv,1), ubound(Mesh%Block(1)%Xv,2)
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'Mesh%Block(1)%Xv               = ',*(g0,3x))") This_Image(),Num_Images(), i, Mesh%Block(1)%Xv(:,:)
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'Mesh%Block(1)%Xv(1,1)          = ',*(g0,3x))") This_Image(),Num_Images(), i, Mesh%Block(1)%Xv(1,1)
  
  sync all
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': Printing remote data')") This_Image(),Num_Images()
  do i = 1,Num_Images()
    write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'size(Mesh%Block[i])            = ',i3)") This_Image(),Num_Images(), i, size( Mesh%Block[i] )
    write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'Mesh%Block(1)[i]%Nx            = ',i3,3X,'Mesh%Block(1)[i]%Ny           = ',i3)") This_Image(),Num_Images(), i, Mesh%Block(1)[i]%Nx, Mesh%Block(1)[i]%Ny
! ! **************************** THESE LINES CREATE A SEGMENTATION FAULT OCCURRED **************************** 
!     write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'size(Mesh%Block(1)[i]%Xv,1)    = ',i3,3X,'size(Mesh%Block(1)[i]%Xv,2)   = ',i3)") This_Image(),Num_Images(), i, size(Mesh%Block(1)[i]%Xv,1), size(Mesh%Block(1)[i]%Xv,2)
!     write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'lbound(Mesh%Block(1)[i]%Xv,1)  = ',i3,3X,'lbound(Mesh%Block(1)[i]%Xv,2) = ',i3)") This_Image(),Num_Images(), i, lbound(Mesh%Block(1)[i]%Xv,1), lbound(Mesh%Block(1)[i]%Xv,2)
!     write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'ubound(Mesh%Block(1)[i]%Xv,1)  = ',i3,3X,'ubound(Mesh%Block(1)[i]%Xv,2) = ',i3)") This_Image(),Num_Images(), i, ubound(Mesh%Block(1)[i]%Xv,1), ubound(Mesh%Block(1)[i]%Xv,2)
!     write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'Mesh%Block(1)[i]%Xv            = ',*(i5,3x))") This_Image(),Num_Images(), i, Mesh%Block(1)[i]%Xv(:,:)
!     write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': i = ',i3,3x,'Mesh%Block(1)%Xv(1,1)          = ',*(i5,3x))") This_Image(),Num_Images(), i, Mesh%Block(1)[i]%Xv(1,1)
! ! **************************** THESE LINES CREATE A SEGMENTATION FAULT OCCURRED **************************** 
  end do
  
  write(*,"(2x,'[Construct_Mesh]:',i1,'/',i1,': Ending')") This_Image(),Num_Images()
 
End Program

Steve Lionel (Intel)'s picture

Thanks for the new example - I can reproduce the error.  Escalated as issue DPD200247881.

Steve
flying_hermes's picture

Any updates on this bug ?

Steve Lionel (Intel)'s picture

Sorry, no. I will ping the developer.

Steve

Login to leave a comment.