g2o
g2o copied to clipboard
heap corruption fail.
Hello
I am using g2o with rtabmap in windows environment with cpp hard coding.
I use graph optimizer with g2o, but It failed code in below.
virtual bool solvePattern(SparseBlockMatrix<MatrixXD>& spinv, const std::vector<std::pair<int, int> >& blockIndices, const SparseBlockMatrix<MatrixType>& A) {
fillCSparse(A, _symbolicDecomposition != 0);
// perform symbolic cholesky once
if (_symbolicDecomposition == 0) {
computeSymbolicDecomposition(A);
assert(_symbolicDecomposition && "Symbolic cholesky failed");
}
// re-allocate the temporary workspace for cholesky
if (_csWorkspaceSize < _ccsA->n) {
_csWorkspaceSize = 2 * _ccsA->n;
delete[] _csWorkspace;
_csWorkspace = new double[_csWorkspaceSize];
delete[] _csIntWorkspace;
_csIntWorkspace = new int[2*_csWorkspaceSize];
}
int ok = 1;
csn* numericCholesky = csparse_extension::cs_chol_workspace(_ccsA, _symbolicDecomposition, _csIntWorkspace, _csWorkspace);
if (numericCholesky) {
MarginalCovarianceCholesky mcc;
mcc.setCholeskyFactor(_ccsA->n, numericCholesky->L->p, numericCholesky->L->i, numericCholesky->L->x, _symbolicDecomposition->pinv);
mcc.computeCovariance(spinv, A.rowBlockIndices(), blockIndices);
cs_nfree(numericCholesky); // <-- heap corruption fail.
} else {
ok = 0;
std::cerr << "inverse fail (numeric decomposition)" << std::endl;
}
I didn't compile g2o with Cholmod. But I don't know why cs_nfree fail....
Do you have a minimal working example that reproduces the error?