Please run program with -ksp_view_binary and send us the file binaryoutput to petsc-maint at mcs.anl.gov so we can reproduce the problem.
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 >
