[petsc-users] pastix solver break at pastix_checkMatrix
    Gong Ding 
    gdiso at ustc.edu
       
    Wed Dec 29 23:00:19 CST 2010
    
    
  
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
    
    
More information about the petsc-users
mailing list