[petsc-users] fortran INTENT with petsc object gives segfault after upgrade from 3.8.4 to 3.10.2
Smith, Barry F.
bsmith at mcs.anl.gov
Fri Oct 19 07:32:21 CDT 2018
Hmm, the intent of all three first arguments should be in since they are passed in from the routine above. Does it work if you replace
> Vec, INTENT(out) :: rr_system
with
> Vec, INTENT(in) :: rr_system
?
Barry
> On Oct 19, 2018, at 3:51 AM, Klaij, Christiaan <C.Klaij at marin.nl> wrote:
>
> I've recently upgraded from petsc-3.8.4 to petsc-3.10.2 and was
> surprised to find a number of segmentation faults in my test
> cases. These turned out to be related to user-defined MatMult and
> PCApply for shell matrices. For example:
>
> SUBROUTINE systemMatMult(aa_system,xx_system,rr_system,ierr)
> Mat, INTENT(in) :: aa_system
> Vec, INTENT(in) :: xx_system
> Vec, INTENT(out) :: rr_system
> PetscErrorCode, INTENT(out) :: ierr
> ...
> END
>
> where aa_system is the shell matrix. This code works fine with
> 3.8.4 and older, but fails with 3.10.2 due to invalid
> pointers (gdb backtrace shows failure of VecSetValues due to
> invalid first argument). After replacing by:
>
> SUBROUTINE mass_momentum_systemMatMult(aa_system,xx_system,rr_system,ierr)
> Mat :: aa_system
> Vec :: xx_system
> Vec :: rr_system
> PetscErrorCode :: ierr
> ...
> END
>
> everything's fine again. So clearly something has changed since
> 3.8.4 that now prevents the use of INTENT in Fortran (at least
> using intel 17.0.1 compilers). Any reason for this?
>
> Chris
>
>
> dr. ir. Christiaan Klaij | Senior Researcher | Research & Development
> MARIN | T +31 317 49 33 44 | mailto:C.Klaij at marin.nl | http://www.marin.nl
>
> MARIN news: http://www.marin.nl/web/News/News-items/ReFRESCO-successfully-coupled-to-ParaView-Catalyst-for-insitu-analysis-1.htm
>
More information about the petsc-users
mailing list