[Trilinos-Users] Segfaults with Tpetra

Martin Vymazal martin.vymazal at vki.ac.be
Sun Jun 7 15:06:27 EDT 2015


Hello,

 Tpetra linear solver & preconditioner started segfaulting randomly since I 
updated to gcc 5.1 (and with that also to glibc 2.21-4).

I'm getting the following error message:

#0  0x0000000000000001 in ?? ()
#1  0x00007fffe9725d80 in Teuchos::RCPNodeHandle::unbindOne() () from 
/data/software/deps/trilinos-12.0.1/lib/libteuchoscore.so.12
#2  0x00007ffff20b2acb in Tpetra::CrsGraph<int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false>::~CrsGraph() 
() from /data/software/deps/trilinos-12.0.1/lib/libifpack2.so.12
#3  0x00007ffff20b2dce in Teuchos::RCPNodeTmpl<Tpetra::CrsGraph<int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false>, 
Teuchos::DeallocDelete<Tpetra::CrsGraph<int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false> > 
>::delete_obj() () from 
/data/software/deps/trilinos-12.0.1/lib/libifpack2.so.12
#4  0x00007fffe9725d80 in Teuchos::RCPNodeHandle::unbindOne() () from 
/data/software/deps/trilinos-12.0.1/lib/libteuchoscore.so.12
#5  0x00007ffff20a492c in Tpetra::CrsMatrix<double, int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false>::~CrsMatrix() 
() from /data/software/deps/trilinos-12.0.1/lib/libifpack2.so.12
#6  0x00007ffff20a4a89 in Tpetra::CrsMatrix<double, int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false>::~CrsMatrix() 
() from /data/software/deps/trilinos-12.0.1/lib/libifpack2.so.12
#7  0x00007fffe9725d80 in Teuchos::RCPNodeHandle::unbindOne() () from 
/data/software/deps/trilinos-12.0.1/lib/libteuchoscore.so.12
#8  0x00007ffff2087bda in Ifpack2::ILUT<Tpetra::CrsMatrix<double, int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false> >::~ILUT() () 
from /data/software/deps/trilinos-12.0.1/lib/libifpack2.so.12
#9  0x00007ffff2087cc9 in Ifpack2::ILUT<Tpetra::CrsMatrix<double, int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial>, false> >::~ILUT() () 
from /data/software/deps/trilinos-12.0.1/lib/libifpack2.so.12
#10 0x00007fffe9725d80 in Teuchos::RCPNodeHandle::unbindOne() () from 
/data/software/deps/trilinos-12.0.1/lib/libteuchoscore.so.12
#11 0x00007ffff6ebb6ce in unbind (this=<optimized out>) at 
/data/software/deps/trilinos-12.0.1/lib/cmake/Trilinos/../../../include/Teuchos_RCPNode.hpp:959
#12 ~RCPNodeHandle (this=<optimized out>) at 
/data/software/deps/trilinos-12.0.1/lib/cmake/Trilinos/../../../include/Teuchos_RCPNode.hpp:784
#13 ~RCP (this=<optimized out>) at 
/data/software/deps/trilinos-12.0.1/lib/cmake/Trilinos/../../../include/Teuchos_RCP.hpp:296
#14 operator= (this=<optimized out>, r_ptr=...) at 
/data/software/deps/trilinos-12.0.1/lib/cmake/Trilinos/../../../include/Teuchos_RCP.hpp:308
#15 pdekit::ls::LSTpetra<double, int, int, 
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >::configure 
(this=0x9e15a8, matrix=..., rhs=..., x=..., print_output=<optimized out>)
    at src/linear_system/LSTpetra.hpp:198

LSTpetra is my own class and on line 198: I have this:

 m_ifpack_prec = factory.create("ILUT", tpetra_mat);

where m_ifpack_prec is a member variable of type 
Teuchos::RCP<Ifpack_prec_type>

with Ifpack_prec_type being a typedef for
Ifpack2::Preconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node> 

tpetra_mat is a variable of type Teuchos::RCP<trilinos_matrix_type const>, 
where 'trilinos_matrix_type' is Tpetra::CrsMatrix<Scalar, LocalOrdinal, 
GlobalOrdinal, Node>

I did not have this problem until the new glibc (I usually compile with clang 
anyway), but it randomly appears regardless of whether I use gcc or clang 
(seems to be more frequent with gcc). Am I doing something wrong? 
I'm also not sure it's correct to assign to the Teuchos::RCP pointer holding 
the preconditioner every time I solve my linear system (i.e at every 
iteration). 

Do you see by any chance from the error output where's the problem?

Thank you,

 Martin Vymazal



More information about the Trilinos-Users mailing list