[petsc-users] Segmentation faults: Derived types

Santiago Ospina De Los Rios sospinar at unal.edu.co
Mon Aug 1 15:41:59 CDT 2016


Hello there,

I'm having problems defining some variables into derived types in Fortran.
Before, I had a similar problems with an allocatable array  "PetsInt" but I
solved it just doing a non-collective Petsc Vec. Today I'm having troubles
with "PetscBool" or "Logical":

In a module which define the variables, I have the following:

MODULE ANISOFLOW_Types
>
>     IMPLICIT NONE
>
> #include <petsc/finclude/petscsys.h>
> #include <petsc/finclude/petscvec.h>
>
> ...
>
>      TYPE ConductivityField
>          PetscBool                               ::
> DefinedByCvtZones=.FALSE.    ! It produces the segmentation fault.
>          PetscBool                               ::
> DefinedByPptZones=.FALSE.    ! It produces the segmentation fault.
>          PetscBool                               :: DefinedByCell=.FALSE.
>          ! Conductivity defined by zones (Local):
>          Vec                                     :: ZoneID
>          TYPE(Tensor),ALLOCATABLE                :: Zone(:)
>          ! Conductivity defined on every cell (Local):
>          Vec                                     :: Cell
>      END TYPE ConductivityField
>
>
>     TYPE SpecificStorageField
>         PetscBool                               ::
> DefinedByStoZones=.FALSE.    ! It produces the segmentation fault.
>         PetscBool                               ::
> DefinedByPptZones=.FALSE.    ! It produces the segmentation fault.
>         PetscBool                               :: DefinedByCell=.FALSE.
>         ! Specific Storage defined by zones (Local):
>         Vec                                     :: ZoneID
>         Vec                                     :: Zone
>         ! Specific Storage defined on every cell (Global).:
>         Vec                                     :: Cell
>     END TYPE SpecificStorageField
>
>     TYPE PropertiesField
>         TYPE(ConductivityField)         :: Cvt
>         TYPE(SpecificStorageField)      :: Sto
>         ! Property defined by zones (Local):
>         PetscBool                       :: DefinedByPptZones=.FALSE.
>         Vec                             :: ZoneID
>     END TYPE PropertiesField
>
> ...
>
> CONTAINS
>
> ...
>
> END MODULE ANISOFLOW_Types
>


Later I use it in the main program, with something like this

PROGRAM ANISOFLOW
>
>     USE ANISOFLOW_Types,                ONLY : ... ,PropertiesField, ...
>     ...
>
>     IMPLICIT NONE
>
> #include <petsc/finclude/petscsys.h>
>
>     ...
>     TYPE(PropertiesField)       :: PptFld
>     ...
>
>     CALL PetscInitialize(PETSC_COMM_WORLD,ierr)
>     ...
>     CALL PetscFinalize(ierr)
>
> END PROGRAM
>


When I run the program appears a Segmentation Fault, which disappears when
I comment the booleans marked in the code. Because I need them, I used
Valgrind to figure out what is happening but it is yet a mistery to me.

Valgrind message:

> ==5160==
> ==5160== Invalid read of size 1
> ==5160==    at 0x4FB2156: petscinitialize_ (zstart.c:433)
> ==5160==    by 0x4030EA: MAIN__ (ANISOFLOW.F90:29) # line of petsc
> inizalitation
> ==5160==    by 0x404380: main (ANISOFLOW.F90:3) # line of "USE
> ANISOFLOW_Types,                ONLY : ... ,PropertiesField, ..."
> ==5160==  Address 0xc54fff is not stack'd, malloc'd or (recently) free'd
> ==5160==
>
> Program received signal SIGSEGV: Segmentation fault - invalid memory
> reference.
>
> Backtrace for this error:
> #0  0x699E777
> #1  0x699ED7E
> #2  0x6F0BCAF
> #3  0x4FB2156
> #4  0x4030EA in anisoflow at ANISOFLOW.F90:29
>

I think it is maybe related with petsc because the error popped out just in
its initialization, so if you know what's going on, I would appreciate to
tell me.

Santiago Ospina
-- 

-- 
Att:

Santiago Ospina De Los Ríos
National University of Colombia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160801/cb8631af/attachment.html>


More information about the petsc-users mailing list