[petsc-users] pastix solver break at pastix_checkMatrix

Barry Smith bsmith at mcs.anl.gov
Thu Dec 30 20:45:25 CST 2010


  Yes, there is an error in how we called one of the pastix routines. It required certain arrays be obtained with a raw malloc(). Please find attached a new src/mat/impls/aij/mpi/pastix/pastix.c put it in that location and run make in that directory.

   Thanks for reporting the problem and sending the valgrind output


   Barry


On Dec 29, 2010, at 11:00 PM, Gong Ding wrote:

> Dear all, 
> 
> I found the pastix solver   
> 
> petsc-3.1-p4
> ./configure --with-vendor-compilers=intel --with-blas-lapack-dir=/opt/intel/mkl/10.2.0.013/lib/em64t/ --download-pastix --download-scotch --with-shared=1 --with-debugging=1
> 
> For a poisson problem with symmetric matrix, pastix works well. 
> However, for unsymmetric problem, the code break. valgrind reported that: 
> Check : Sort CSC                OK
> ==4959== Invalid read of size 4
> ==4959==    at 0x1241931: PetscTrFreeDefault (mtr.c:280)
> ==4959==    by 0x150448A: MatConvertToCSC (pastix.c:188)
> ==4959==    by 0x1506638: MatFactorNumeric_PaStiX (pastix.c:390)
> ==4959==    by 0x13980AB: MatLUFactorNumeric (matrix.c:2587)
> ==4959==    by 0x16AB0A6: PCSetUp_LU (lu.c:158)
> ==4959==    by 0x1A9BD42: PCSetUp (precon.c:795)
> ==4959==    by 0x16FA8D0: KSPSetUp (itfunc.c:237)
> ==4959==    by 0x16FBB2A: KSPSolve (itfunc.c:353)
> ==4959==    by 0x17BEC6D: SNES_KSPSolve (snes.c:2944)
> ==4959==    by 0x17CEFEA: SNESSolve_LS (ls.c:191)
> ==4959==    by 0x17B8B78: SNESSolve (snes.c:2255)
> ==4959==    by 0x10B969D: FVM_NonlinearSolver::sens_solve() (fvm_nonlinear_solver.cc:820)
> ==4959==  Address 0x88e2f08 is 8 bytes inside a block of size 40 free'd
> ==4959==    at 0x4A05B16: operator delete(void*) (vg_replace_malloc.c:387)
> ==4959==    by 0xA42A53: __gnu_cxx::new_allocator<std::_Rb_tree_node<CTRI::Triangle*> >::deallocate(std::_Rb_tree_node<CTRI::Triangle*>*, unsigned long) (new_allocator.h:94)
> ==4959==    by 0xA41863: std::_Rb_tree<CTRI::Triangle*, CTRI::Triangle*, std::_Identity<CTRI::Triangle*>, std::less<CTRI::Triangle*>, std::allocator<CTRI::Triangle*> >::_M_put_node(std::_Rb_tree_node<CTRI::Triangle*>*) (stl_tree.h:362)
> ==4959==    by 0xA419C8: std::_Rb_tree<CTRI::Triangle*, CTRI::Triangle*, std::_Identity<CTRI::Triangle*>, std::less<CTRI::Triangle*>, std::allocator<CTRI::Triangle*> >::destroy_node(std::_Rb_tree_node<CTRI::Triangle*>*) (stl_tree.h:392)
> ==4959==    by 0xA42501: std::_Rb_tree<CTRI::Triangle*, CTRI::Triangle*, std::_Identity<CTRI::Triangle*>, std::less<CTRI::Triangle*>, std::allocator<CTRI::Triangle*> >::erase(std::_Rb_tree_iterator<CTRI::Triangle*>) (stl_tree.h:1189)
> ==4959==    by 0xA4264A: std::_Rb_tree<CTRI::Triangle*, CTRI::Triangle*, std::_Identity<CTRI::Triangle*>, std::less<CTRI::Triangle*>, std::allocator<CTRI::Triangle*> >::erase(std::_Rb_tree_iterator<CTRI::Triangle*>, std::_Rb_tree_iterator<CTRI::Triangle*>) (stl_tree.h:1281)
> ==4959==    by 0xA4257B: std::_Rb_tree<CTRI::Triangle*, CTRI::Triangle*, std::_Identity<CTRI::Triangle*>, std::less<CTRI::Triangle*>, std::allocator<CTRI::Triangle*> >::erase(CTRI::Triangle* const&) (stl_tree.h:1215)
> ==4959==    by 0xA415E2: std::set<CTRI::Triangle*, std::less<CTRI::Triangle*>, std::allocator<CTRI::Triangle*> >::erase(CTRI::Triangle* const&) (stl_set.h:387)
> ==4959==    by 0xA3F6BD: CTRI::Triangle::~Triangle() (c_triangle.cc:109)
> ==4959==    by 0xA43F16: CTRI::TriMesh::~TriMesh() (c_trimesh.cc:163)
> ==4959==    by 0xA3F0C6: ctri_triangulate (c_tri_io.cc:35)
> ==4959==    by 0xD53FB9: MeshGeneratorTri3::do_refine(MeshRefinement&) (mesh_generation_tri3.cc:1369)
> ==4959==
> [0]PETSC ERROR: PetscTrFreeDefault() called from MatConvertToCSC() line 188 in src/mat/impls/aij/mpi/pastix/pastix.c
> [0]PETSC ERROR: Block at address 0x88e2ee0 is corrupted; cannot free;
> may be block not allocated with PetscMalloc()
> 
> The test problems used to work well under other linear solvers such as MUMPS and superlu.
> Does any meet this problem before?
> 
> Yours
> Gong Ding
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastix.c
Type: application/octet-stream
Size: 27993 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20101230/27e0a289/attachment.obj>


More information about the petsc-users mailing list