> On Aug 1, 2016, at 4:41 PM, Santiago Ospina De Los Rios > <[email protected]> wrote: > > 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
It is curious that it says "of size 1" when we declare PetscBool to be a logical*4 I don't see anything obviously wrong. Please send a simple code we can compile and run that reproduces the problem. Barry > ==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
