You code has a bug right at the top:

   CALL PetscInitialize(PETSC_COMM_WORLD,ierr)

should be

   CALL PetscInitialize(PETSC_NULL_CHARACTER,ierr)

you were just lucky previously that the stack frame was different enough that 
it did not previously crash. Once I corrected the code the new version ran 
without crashing. I found the bug very easily by simply running the new version 
directly in the debugger 

lldb ./ANSIFLOW 

and seeing it crashed with a crazy stack in petscinitialize_

  Barry


> On Aug 5, 2016, at 11:34 PM, Santiago Ospina De Los Rios 
> <[email protected]> wrote:
> 
> Dear Barry,
> 
> I tried to build a simple code with the same things I mentioned to you on 
> last e-mail but it worked, which is more strange to me. So I built two 
> branches on my git code to show you the problem:
> 
> git code: https://github.com/SoilRos/ANISOFLOWPACK
> 
> Branch:  PETSc_debug_boolean_0
> The first one is a simple code which is working for what was designed. Forget 
> sample problems, just compile and run the ANISOFLOW executable on src folder, 
> if there are some verbose messages then the program is working.
> 
> Branch:  PETSc_debug_boolean_1
> The second one is just a modification of the first one adding the two 
> booleans mentioned above in 01_Types.F90 file. I tried it in mac El Capitan 
> and Ubuntu (with Valgrind) and PETSc 3.7.3 and 3.7.2 respectively, both with 
> the same segmentation fault.
> 
> PD: Although I already fixed it compressing the three booleans into one 
> integer, I think is better if we try to figure out why there is a 
> segmentation fault because I had similar problems before.
> PD2: Please obviate the variable description because are pretty out of date. 
> I'm trying to change it, so it can be confusing.
> 
> Best wishes,
> Santiago Ospina
> 
> 2016-08-05 15:54 GMT-05:00 Barry Smith <[email protected]>:
> 
> > 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
> 
> 
> 
> 
> -- 
> 
> -- 
> Att:
> 
> Santiago Ospina De Los Ríos
> National University of Colombia

Reply via email to