New user self-registration is disabled due to spam. Please email eigen-core-team @ lists.tuxfamily.org if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 1696 - Crash on AMD ordering (called by SimplicialLDLT::analyzePattern)
Summary: Crash on AMD ordering (called by SimplicialLDLT::analyzePattern)
Status: NEW
Alias: None
Product: Eigen
Classification: Unclassified
Component: Sparse (show other bugs)
Version: 3.3 (current stable)
Hardware: x86 - 64-bit Windows
: Normal Crash
Assignee: Nobody
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-03-26 16:59 UTC by Roberto Toldo
Modified: 2019-03-26 16:59 UTC (History)
2 users (show)



Attachments

Description Roberto Toldo 2019-03-26 16:59:04 UTC
Crash on the sparse simplicial LDLT factorization. The crash is probably rare and related to a particular matrix configuration (the ldlt decomposition has been used a lot of times, and never caused problems). Building with the x64 VS2017 compiler. Since the data matrix is large, I've zipped and uploaded it here:
https://shared.3dflow.net/index.php/s/BZ91PVhuKxXaIHu

Here's the snippet to read the matrix and reproduce the problem:

std::ifstream file( "jtj.mat", std::ios::binary );
Eigen::SparseMatrix< double > matrix;

{
	// deserialization
	int rows, cols, nnz, inSz, outSz;
	file.read( ( char * ) &rows, sizeof( int ) );
	file.read( ( char * ) &cols, sizeof( int ) );
	file.read( ( char * ) &nnz, sizeof( int ) );
	file.read( ( char * ) &inSz, sizeof( int ) );
	file.read( ( char * ) &outSz, sizeof( int ) );

	unsigned char compressedFlag;
	file.read( ( char * ) &( compressedFlag ), sizeof( unsigned char ) );

	matrix.resize( rows, cols );

	if ( compressedFlag > 0 )
		matrix.makeCompressed();

	matrix.resizeNonZeros( nnz );

	file.read( ( char * ) ( matrix.valuePtr() ), sizeof( double ) * nnz );
	file.read( ( char * ) ( matrix.outerIndexPtr() ), sizeof( int ) * outSz );
	file.read( ( char * ) ( matrix.innerIndexPtr() ), sizeof( int ) * nnz );

	matrix.finalize();
}
Eigen::SimplicialLDLT< Eigen::SparseMatrix< double > > ssldlt;
ssldlt.analyzePattern( matrix ); // Crash here


Please let me know if you need more information. Thanks!

Note You need to log in before you can comment on or make changes to this bug.