[petsc-dev] problems with memory leak in PetscViewer and log_view

Stefano Zampini stefano.zampini at gmail.com
Thu Oct 12 07:32:39 CDT 2017


Instead of reporting a leak, the below code, when run with -log_view,
triggers an error

#include <petscviewer.h>

int main(int argc,char **args)
{
  PetscErrorCode ierr;
  PetscViewer    view;

  ierr = PetscInitialize(&argc,&args,(char*)0,help);CHKERRQ(ierr);
  ierr = PetscViewerASCIIGetStdout(PETSC_COMM_WORLD,&view);CHKERRQ(ierr);
  ierr = PetscViewerCreate(PETSC_COMM_WORLD,&view);CHKERRQ(ierr);
  ierr = PetscFinalize();
  return ierr;
}

0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR: Corrupt argument:
http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
[0]PETSC ERROR: Invalid type of object: Parameter # 1
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[0]PETSC ERROR: Petsc Development GIT revision: v3.7.6-4792-gbbfd41f  GIT
Date: 2017-07-30 13:35:30 +0300
[0]PETSC ERROR: ./ex1 on a arch-debug named localhost.localdomain by
szampini Thu Oct 12 15:24:19 2017
[0]PETSC ERROR: Configure options --download-chaco --download-ctetgen
--download-hypre --download-metis --download-mumps --download-p4est
--download-parmetis --download-suitesparse --download-triangle
--with-scalapack CFLAGS="-Wall -g -O0" CXXFLAGS="-Wall -g -O0" FCFLAGS="-g
-O0" PETSC_ARCH=arch-debug
[0]PETSC ERROR: #1 PetscObjectReference() line 510 in
/home/szampini/src/petsc/src/sys/objects/inherit.c
[0]PETSC ERROR: #2 PetscOptionsGetViewer() line 259 in
/home/szampini/src/petsc/src/sys/classes/viewer/interface/viewreg.c
[0]PETSC ERROR: #3 PetscLogViewFromOptions() line 1753 in
/home/szampini/src/petsc/src/sys/logging/plog.c
[0]PETSC ERROR: #4 PetscFinalize() line 1227 in
/home/szampini/src/petsc/src/sys/objects/pinit.c

The problem is with the MPIAttribute Petsc_Viewer_Stdout_keyval attached to
PETSC_COMM_WORLD. PETSC_VIEWER_STDOUT_WORLD gets destroyed in the first
call to   PetscObjectRegisterDestroyAll(); Then PetscLogViewFromOptions()
call PetscViewerASCIIGetStdout that checks for the presence of the
attribute on the communicator, which is still there, since we never called
MPI_Comm_free on that communicator.

What would be a solution for this issue? At least, we should print a nice
error message in PetscViewerASCIIGetStdout.


-- 
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20171012/481b7196/attachment.html>


More information about the petsc-dev mailing list