Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

simple snippets got core dumped #348

Open
lucasjinreal opened this issue Apr 4, 2019 · 4 comments
Open

simple snippets got core dumped #348

lucasjinreal opened this issue Apr 4, 2019 · 4 comments

Comments

@lucasjinreal
Copy link

here is a simple program:

#include <iostream>
// for opencv
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <boost/concept_check.hpp>
// for g2o
#include <g2o/core/sparse_optimizer.h>
#include <g2o/core/block_solver.h>
#include <g2o/core/robust_kernel.h>
#include <g2o/core/robust_kernel_impl.h>
#include <g2o/core/optimization_algorithm_levenberg.h>
#include <g2o/solvers/cholmod/linear_solver_cholmod.h>
#include <g2o/types/slam3d/se3quat.h>
#include <g2o/types/sba/types_six_dof_expmap.h>

using namespace std;
using namespace cv;

double cx = 325.5;
double cy = 253.5;
double fx = 518.0;
double fy = 519.0;

int findCorrespondingPoints(const cv::Mat &img1,
                            const cv::Mat &img2,
                            vector<cv::Point2f> &points1,
                            vector<cv::Point2f> &points2) {
  Ptr<ORB> orb = ORB::create(4000, 1.2f, 8, 31, 0, 2, ORB::HARRIS_SCORE, 31, 20);
  vector<cv::KeyPoint> kp1, kp2;
  cv::Mat desp1, desp2;
  orb->detectAndCompute(img1, Mat(), kp1, desp1);
  orb->detectAndCompute(img2, Mat(), kp2, desp2);

  cout << "分别找到了" << kp1.size() << "和" << kp2.size() << "个特征点" << endl;
  cv::Ptr<cv::DescriptorMatcher> matcher = cv::DescriptorMatcher::create("BruteForce-Hamming");

  double knn_match_ratio = 0.8;
  vector<vector<cv::DMatch> > matches_knn;
  matcher->knnMatch(desp1, desp2, matches_knn, 2);
  vector<cv::DMatch> matches;
  for (size_t i = 0; i < matches_knn.size(); i++) {
    if (matches_knn[i][0].distance < knn_match_ratio * matches_knn[i][1].distance)
      matches.push_back(matches_knn[i][0]);
  }

  if (matches.size() <= 20) //匹配点太少
    return false;

  for (auto m:matches) {
    points1.push_back(kp1[m.queryIdx].pt);
    points2.push_back(kp2[m.trainIdx].pt);
  }

  return true;
}

int main(int argc, char **argv) {

  if (argc != 3) {
    cout << "Usage: a img1 img2\n";
  }

  cv::Mat img1 = cv::imread(argv[1]);
  cv::Mat img2 = cv::imread(argv[1]);

  vector<cv::Point2f> pts1, pts2;

  if (findCorrespondingPoints(img1, img2, pts1, pts2) == false) {
    cout << "匹配点不够!" << endl;
    return 0;
  }
  cout << "找到了" << pts1.size() << "组对应特征点。" << endl;
  // 构造g2o中的图
  // 先构造求解器
  g2o::SparseOptimizer optimizer;
  // 使用Cholmod中的线性方程求解器
//  g2o::BlockSolver_6_3::LinearSolverType
//      *linearSolver = new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>();
  // 6*3 的参数
//  g2o::BlockSolver_6_3 *block_solver = new g2o::BlockSolver_6_3(linearSolver);
//  g2o::BlockSolver_6_3 *block_solver = new g2o::BlockSolver_6_3(linearSolver);
  // L-M 下降
//  g2o::OptimizationAlgorithmLevenberg *algorithm = new g2o::OptimizationAlgorithmLevenberg(block_solver);

  std::unique_ptr<g2o::BlockSolver_6_3::LinearSolverType> linearSolver;
  linearSolver = g2o::make_unique<g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>>();
  g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(
      g2o::make_unique<g2o::BlockSolver_6_3>(std::move(linearSolver)));

  optimizer.setAlgorithm(solver);
  optimizer.setVerbose(false);

  // 添加节点
  // 两个位姿节点
  for (int i = 0; i < 2; i++) {
    g2o::VertexSE3Expmap *v = new g2o::VertexSE3Expmap();
    v->setId(i);
    if (i == 0)
      v->setFixed(true); // 第一个点固定为零
    // 预设值为单位Pose,因为我们不知道任何信息
    v->setEstimate(g2o::SE3Quat());
    optimizer.addVertex(v);
  }
  // 很多个特征点的节点
  // 以第一帧为准
  for (size_t i = 0; i < pts1.size(); i++) {
    g2o::VertexSBAPointXYZ *v = new g2o::VertexSBAPointXYZ();
    v->setId(2 + i);
    // 由于深度不知道,只能把深度设置为1了
    double z = 1;
    double x = (pts1[i].x - cx) * z / fx;
    double y = (pts1[i].y - cy) * z / fy;
    v->setMarginalized(true);
    v->setEstimate(Eigen::Vector3d(x, y, z));
    optimizer.addVertex(v);
  }

  // 准备相机参数
  g2o::CameraParameters *camera = new g2o::CameraParameters(fx, Eigen::Vector2d(cx, cy), 0);
  camera->setId(0);
  optimizer.addParameter(camera);

  // 准备边
  // 第一帧
  vector<g2o::EdgeProjectXYZ2UV *> edges;
  for (size_t i = 0; i < pts1.size(); i++) {
    g2o::EdgeProjectXYZ2UV *edge = new g2o::EdgeProjectXYZ2UV();
    edge->setVertex(0, dynamic_cast<g2o::VertexSBAPointXYZ *>   (optimizer.vertex(i + 2)));
    edge->setVertex(1, dynamic_cast<g2o::VertexSE3Expmap *>     (optimizer.vertex(0)));
    edge->setMeasurement(Eigen::Vector2d(pts1[i].x, pts1[i].y));
    edge->setInformation(Eigen::Matrix2d::Identity());
    edge->setParameterId(0, 0);
    // 核函数
    edge->setRobustKernel(new g2o::RobustKernelHuber());
    optimizer.addEdge(edge);
    edges.push_back(edge);
  }
  // 第二帧
  for (size_t i = 0; i < pts2.size(); i++) {
    g2o::EdgeProjectXYZ2UV *edge = new g2o::EdgeProjectXYZ2UV();
    edge->setVertex(0, dynamic_cast<g2o::VertexSBAPointXYZ *>   (optimizer.vertex(i + 2)));
    edge->setVertex(1, dynamic_cast<g2o::VertexSE3Expmap *>     (optimizer.vertex(1)));
    edge->setMeasurement(Eigen::Vector2d(pts2[i].x, pts2[i].y));
    edge->setInformation(Eigen::Matrix2d::Identity());
    edge->setParameterId(0, 0);
    // 核函数
    edge->setRobustKernel(new g2o::RobustKernelHuber());
    optimizer.addEdge(edge);
    edges.push_back(edge);
  }

  cout << "开始优化" << endl;
  optimizer.setVerbose(true);
  optimizer.initializeOptimization();
  optimizer.optimize(10);
  cout << "优化完毕" << endl;

  //我们比较关心两帧之间的变换矩阵
  g2o::VertexSE3Expmap *v = dynamic_cast<g2o::VertexSE3Expmap *>( optimizer.vertex(1));
  Eigen::Isometry3d pose = v->estimate();
  cout << "Pose=" << endl << pose.matrix() << endl;

  // 以及所有特征点的位置
  for (size_t i = 0; i < pts1.size(); i++) {
    g2o::VertexSBAPointXYZ *v = dynamic_cast<g2o::VertexSBAPointXYZ *> (optimizer.vertex(i + 2));
    cout << "vertex id " << i + 2 << ", pos = ";
    Eigen::Vector3d pos = v->estimate();
    cout << pos(0) << "," << pos(1) << "," << pos(2) << endl;
  }

  // 估计inlier的个数
  int inliers = 0;
  for (auto e:edges) {
    e->computeError();
    // chi2 就是 error*\Omega*error, 如果这个数很大,说明此边的值与其他边很不相符
    if (e->chi2() > 1) {
      cout << "error = " << e->chi2() << endl;
    } else {
      inliers++;
    }
  }

  cout << "inliers in total points: " << inliers << "/" << pts1.size() + pts2.size() << endl;
  optimizer.save("ba.g2o");
  return 0;

}

It compiles with linking to g2o, but when run, got this error:

*** Error in `./ba_example': double free or corruption (out): 0x00000000012a68c0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f3fa62a77e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f3fa62b037a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f3fa62b453c]
/usr/local/lib/libg2o_types_sba.so(_ZN3g2o26EdgeProjectP2MC_IntrinsicsD0Ev+0x2d)[0x7f3fa868eb0d]
/usr/local/lib/libg2o_core.so(_ZN3g2o7Factory12registerTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_32AbstractHyperGraphElementCreatorE+0x497)[0x7f3fa8b20fd7]
/usr/local/lib/libg2o_types_sba.so(+0x20a3d)[0x7f3fa8686a3d]
/lib64/ld-linux-x86-64.so.2(+0x106ca)[0x7f3fa8d516ca]
/lib64/ld-linux-x86-64.so.2(+0x107db)[0x7f3fa8d517db]
/lib64/ld-linux-x86-64.so.2(+0xc6a)[0x7f3fa8d41c6a]
======= Memory map: ========
00400000-00419000 r-xp 00000000 103:04 61252                             /media//data/vslam/vendor/g2o_match/build/ba_example
00618000-00619000 r--p 00018000 103:04 61252                             /media//data/vslam/vendor/g2o_match/build/ba_example
00619000-0061a000 rw-p 00019000 103:04 61252                             /media//data/vslam/vendor/g2o_match/build/ba_example
0128c000-012ad000 rw-p 00000000 00:00 0                                  [heap]
7f3f88000000-7f3f88021000 rw-p 00000000 00:00 0 
7f3f88021000-7f3f8c000000 ---p 00000000 00:00 0 
7f3f8c94e000-7f3f9094e000 rw-p 00000000 00:00 0 
7f3f9094e000-7f3f9094f000 ---p 00000000 00:00 0 
7f3f9094f000-7f3f9114f000 rwxp 00000000 00:00 0 
7f3f9114f000-7f3f9314f000 rw-p 00000000 00:00 0 
7f3f9314f000-7f3f93150000 ---p 00000000 00:00 0 
7f3f93150000-7f3f93950000 rwxp 00000000 00:00 0 
7f3f93950000-7f3f93951000 ---p 00000000 00:00 0 
7f3f93951000-7f3f94151000 rwxp 00000000 00:00 0 
7f3f94151000-7f3f9c151000 rw-p 00000000 00:00 0 
7f3f9c151000-7f3f9c152000 ---p 00000000 00:00 0 
7f3f9c152000-7f3f9c952000 rwxp 00000000 00:00 0 
7f3f9c952000-7f3f9c953000 ---p 00000000 00:00 0 
7f3f9c953000-7f3f9d153000 rwxp 00000000 00:00 0 
7f3f9d153000-7f3f9d154000 ---p 00000000 00:00 0 
7f3f9d154000-7f3f9d954000 rwxp 00000000 00:00 0 
7f3f9d954000-7f3f9d955000 ---p 00000000 00:00 0 
7f3f9d955000-7f3f9e155000 rwxp 00000000 00:00 0 
7f3f9e155000-7f3f9e193000 r-xp 00000000 103:08 529488                    /usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
7f3f9e193000-7f3f9e392000 ---p 0003e000 103:08 529488                    /usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
7f3f9e392000-7f3f9e393000 r--p 0003d000 103:08 529488                    /usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
7f3f9e393000-7f3f9e394000 rw-p 0003e000 103:08 529488                    /usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
7f3f9e394000-7f3f9e39f000 r-xp 00000000 103:08 532986                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
7f3f9e39f000-7f3f9e59e000 ---p 0000b000 103:08 532986                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
7f3f9e59e000-7f3f9e59f000 r--p 0000a000 103:08 532986                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
7f3f9e59f000-7f3f9e5a2000 rw-p 0000b000 103:08 532986                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
7f3f9e5a2000-7f3f9e5c3000 r-xp 00000000 103:08 1315482                   /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f3f9e5c3000-7f3f9e7c2000 ---p 00021000 103:08 1315482                   /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f3f9e7c2000-7f3f9e7c3000 r--p 00020000 103:08 1315482                   /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f3f9e7c3000-7f3f9e7c4000 rw-p 00021000 103:08 1315482                   /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f3f9e7c4000-7f3f9e8ed000 r-xp 00000000 103:08 525900                    /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
7f3f9e8ed000-7f3f9eaec000 ---p 00129000 103:08 525900                    /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
7f3f9eaec000-7f3f9eaed000 r--p 00128000 103:08 525900                    /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
7f3f9eaed000-7f3f9eaef000 rw-p 00129000 103:08 525900                    /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
7f3f9eaef000-7f3fa0953000 r-xp 00000000 103:08 536470                    /usr/lib/libopenblasp-r0.2.18.so
7f3fa0953000-7f3fa0b52000 ---p 01e64000 103:08 536470                    /usr/lib/libopenblasp-r0.2.18.so
7f3fa0b52000-7f3fa0b58000 r--p 01e63000 103:08 536470                    /usr/lib/libopenblasp-r0.2.18.so
7f3fa0b58000-7f3fa0b6a000 rw-p 01e69000 103:08 536470                    /usr/lib/libopenblasp-r0.2.18.so
7f3fa0b6a000-7f3fa0b83000 rw-p 00000000 00:00 0 
7f3fa0b83000-7f3fa0b8a000 r-xp 00000000 103:08 1316492                   /lib/x86_64-linux-gnu/librt-2.23.so
7f3fa0b8a000-7f3fa0d89000 ---p 00007000 103:08 1316492                   /lib/x86_64-linux-gnu/librt-2.23.so
7f3fa0d89000-7f3fa0d8a000 r--p 00006000 103:08 1316492                   /lib/x86_64-linux-gnu/librt-2.23.so
7f3fa0d8a000-7f3fa0d8b000 rw-p 00007000 103:08 1316492                   /lib/x86_64-linux-gnu/librt-2.23.so
7f3fa0d8b000-7f3fa0d8e000 r-xp 00000000 103:08 1316494                   /lib/x86_64-linux-gnu/libdl-2.23.so
7f3fa0d8e000-7f3fa0f8d000 ---p 00003000 103:08 1316494                   /lib/x86_64-linux-gnu/libdl-2.23.so
7f3fa0f8d000-7f3fa0f8e000 r--p 00002000 103:08 1316494                   /lib/x86_64-linux-gnu/libdl-2.23.so
7f3fa0f8e000-7f3fa0f8f000 rw-p 00003000 103:08 1316494                   /lib/x86_64-linux-gnu/libdl-2.23.so
7f3fa0f8f000-7f3fa0fa8000 r-xp 00000000 103:08 1315606                   /lib/x86_64-linux-gnu/libz.so.1.2.8
7f3fa0fa8000-7f3fa11a7000 ---p 00019000 103:08 1315606                   /lib/x86_64-linux-gnu/libz.so.1.2.8
7f3fa11a7000-7f3fa11a8000 r--p 00018000 103:08 1315606                   /lib/x86_64-linux-gnu/libz.so.1.2.8
7f3fa11a8000-7f3fa11a9000 rw-p 00019000 103:08 1315606                   /lib/x86_64-linux-gnu/libz.so.1.2.8
7f3fa11a9000-7f3fa11f3000 r-xp 00000000 103:08 532983                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
7f3fa11f3000-7f3fa13f2000 ---p 0004a000 103:08 532983                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
7f3fa13f2000-7f3fa13f3000 r--p 00049000 103:08 532983                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
7f3fa13f3000-7f3fa13f7000 rw-p 0004a000 103:08 532983                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
7f3fa13f7000-7f3fa13fe000 rw-p 00000000 00:00 0 
7f3fa13fe000-7f3fa146f000 r-xp 00000000 103:08 534956                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
7f3fa146f000-7f3fa166f000 ---p 00071000 103:08 534956                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
7f3fa166f000-7f3fa1670000 r--p 00071000 103:08 534956                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
7f3fa1670000-7f3fa1673000 rw-p 00072000 103:08 534956                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
7f3fa1673000-7f3fa1697000 r-xp 00000000 103:08 1315556                   /lib/x86_64-linux-gnu/libpng12.so.0.54.0
7f3fa1697000-7f3fa1896000 ---p 00024000 103:08 1315556                   /lib/x86_64-linux-gnu/libpng12.so.0.54.0
7f3fa1896000-7f3fa1897000 r--p 00023000 103:08 1315556                   /lib/x86_64-linux-gnu/libpng12.so.0.54.0
7f3fa1897000-7f3fa1898000 rw-p 00024000 103:08 1315556                   /lib/x86_64-linux-gnu/libpng12.so.0.54.0
7f3fa1898000-7f3fa18f1000 r-xp 00000000 103:08 533562                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
7f3fa18f1000-7f3fa1af1000 ---p 00059000 103:08 533562                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
7f3fa1af1000-7f3fa1af2000 r--p 00059000 103:08 533562                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
7f3fa1af2000-7f3fa1af4000 rw-p 0005a000 103:08 533562                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
7f3fa1af4000-7f3fa1b4b000 r-xp 00000000 103:08 532990                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
7f3fa1b4b000-7f3fa1d4b000 ---p 00057000 103:08 532990                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
7f3fa1d4b000-7f3fa1d4c000 r--p 00057000 103:08 532990                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
7f3fa1d4c000-7f3fa1d4d000 rw-p 00058000 103:08 532990                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
7f3fa1d4d000-7f3fa1d65000 r-xp 00000000 103:08 1316496                   /lib/x86_64-linux-gnu/libpthread-2.23.so
7f3fa1d65000-7f3fa1f64000 ---p 00018000 103:08 1316496                   /lib/x86_64-linux-gnu/libpthread-2.23.so
7f3fa1f64000-7f3fa1f65000 r--p 00017000 103:08 1316496                   /lib/x86_64-linux-gnu/libpthread-2.23.so
7f3fa1f65000-7f3fa1f66000 rw-p 00018000 103:08 1316496                   /lib/x86_64-linux-gnu/libpthread-2.23.so
7f3fa1f66000-7f3fa1f6a000 rw-p 00000000 00:00 0 
7f3fa1f6a000-7f3fa458f000 r-xp 00000000 103:08 921799                    /usr/local/lib/libopencv_imgproc.so.3.4.3
7f3fa458f000-7f3fa478f000 ---p 02625000 103:08 921799                    /usr/local/lib/libopencv_imgproc.so.3.4.3
7f3fa478f000-7f3fa47a5000 r--p 02625000 103:08 921799                    /usr/local/lib/libopencv_imgproc.so.3.4.3
7f3fa47a5000-7f3fa47c7000 rw-p 0263b000 103:08 921799                    /usr/local/lib/libopencv_imgproc.so.3.4.3
7f3fa47c7000-7f3fa4866000 rw-p 00000000 00:00 0 
7f3fa4866000-7f3fa48b9000 r-xp 00000000 103:08 921795                    /usr/local/lib/libopencv_flann.so.3.4.3
7f3fa48b9000-7f3fa4ab8000 ---p 00053000 103:08 921795                    /usr/local/lib/libopencv_flann.so.3.4.3
7f3fa4ab8000-7f3fa4aba000 r--p 00052000 103:08 921795                    /usr/local/lib/libopencv_flann.so.3.4.3
7f3fa4aba000-7f3fa4abb000 rw-p 00054000 103:08 921795                    /usr/local/lib/libopencv_flann.so.3.4.3
7f3fa4abb000-7f3fa4abd000 r-xp 00000000 103:08 533412                    /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so.4.4.6
7f3fa4abd000-7f3fa4cbc000 ---p 00002000 103:08 533412                    /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so.4.4.6
7f3fa4cbc000-7f3fa4cbd000 r--p 00001000 103:08 533412                    /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so.4.4.6
7f3fa4cbd000-7f3fa4cbe000 rw-p 00002000 103:08 533412                    /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so.4.4.6
7f3fa4cbe000-7f3fa4cc7000 r-xp 00000000 103:08 527343                    /usr/lib/x86_64-linux-gnu/libccolamd.so.2.9.1
7f3fa4cc7000-7f3fa4ec7000 ---p 00009000 103:08 527343                    /usr/lib/x86_64-linux-gnu/libccolamd.so.2.9.1
7f3fa4ec7000-7f3fa4ec8000 r--p 00009000 103:08 527343                    /usr/lib/x86_64-linux-gnu/libccolamd.so.2.9.1
7f3fa4ec8000-7f3fa4ec9000 rw-p 0000a000 103:08 527343                    /usr/lib/x86_64-linux-gnu/libccolamd.so.2.9.1
7f3fa4ec9000-7f3fa4ed2000 r-xp 00000000 103:08 527342                    /usr/lib/x86_64-linux-gnu/libcamd.so.2.4.1
7f3fa4ed2000-7f3fa50d1000 ---p 00009000 103:08 527342                    /usr/lib/x86_64-linux-gnu/libcamd.so.2.4.1
7f3fa50d1000-7f3fa50d2000 r--p 00008000 103:08 527342                    /usr/lib/x86_64-linux-gnu/libcamd.so.2.4.1
7f3fa50d2000-7f3fa50d3000 rw-p 00009000 103:08 527342                    /usr/lib/x86_64-linux-gnu/libcamd.so.2.4.1
7f3fa50d3000-7f3fa50d9000 r-xp 00000000 103:08 532463                    /usr/lib/x86_64-linux-gnu/libcolamd.so.2.9.1
7f3fa50d9000-7f3fa52d8000 ---p 00006000 103:08 532463                    /usr/lib/x86_64-linux-gnu/libcolamd.so.2.9.1
7f3fa52d8000-7f3fa52d9000 r--p 00005000 103:08 532463                    /usr/lib/x86_64-linux-gnu/libcolamd.so.2.9.1
7f3fa52d9000-7f3fa52da000 rw-p 00006000 103:08 532463                    /usr/lib/x86_64-linux-gnu/libcolamd.so.2.9.1
7f3fa52da000-7f3fa52e2000 r-xp 00000000 103:08 527341                    /usr/lib/x86_64-linux-gnu/libamd.so.2.4.1
7f3fa52e2000-7f3fa54e1000 ---p 00008000 103:08 527341                    /usr/lib/x86_64-linux-gnu/libamd.so.2.4.1
7f3fa54e1000-7f3fa54e2000 r--p 00007000 103:08 527341                    /usr/lib/x86_64-linux-gnu/libamd.so.2.4.1
7f3fa54e2000-7f3fa54e3000 rw-p 00008000 103:08 527341                    /usr/lib/x86_64-linux-gnu/libamd.so.2.4.1
7f3fa54e3000-7f3fa5ac3000 r-xp 00000000 103:08 794248                    /usr/lib/openblas-base/liblapack.so.3
7f3fa5ac3000-7f3fa5cc3000 ---p 005e0000 103:08 794248                    /usr/lib/openblas-base/liblapack.so.3
7f3fa5cc3000-7f3fa5cc4000 r--p 005e0000 103:08 794248                    /usr/lib/openblas-base/liblapack.so.3
7f3fa5cc4000-7f3fa5cc6000 rw-p 005e1000 103:08 794248                    /usr/lib/openblas-base/liblapack.so.3
7f3fa5cc6000-7f3fa5d21000 r-xp 00000000 103:08 794247                    /usr/lib/openblas-base/libblas.so.3
7f3fa5d21000-7f3fa5f21000 ---p 0005b000 103:08 794247                    /usr/lib/openblas-base/libblas.so.3
7f3fa5f21000-7f3fa5f26000 r--p 0005b000 103:08 794247                    /usr/lib/openblas-base/libblas.so.3
7f3fa5f26000-7f3fa5f27000 rw-p 00060000 103:08 794247                    /usr/lib/openblas-base/libblas.so.3
7f3fa5f27000-7f3fa602f000 r-xp 00000000 103:08 1316512                   /lib/x86_64-linux-gnu/libm-2.23.so
7f3fa602f000-7f3fa622e000 ---p 00108000 103:08 1316512                   /lib/x86_64-linux-gnu/libm-2.23.so
7f3fa622e000-7f3fa622f000 r--p 00107000 103:08 1316512                   /lib/x86_64-linux-gnu/libm-2.23.so
7f3fa622f000-7f3fa6230000 rw-p 00108000 103:08 1316512                   /lib/x86_64-linux-gnu/libm-2.23.so
7f3fa6230000-7f3fa63f0000 r-xp 00000000 103:08 1316509                   /lib/x86_64-linux-gnu/libc-2.23.so
7f3fa63f0000-7f3fa65f0000 ---p 001c0000 103:08 1316509                   /lib/x86_64-linux-gnu/libc-2.23.so
7f3fa65f0000-7f3fa65f4000 r--p 001c0000 103:08 1316509                   /lib/x86_64-linux-gnu/libc-2.23.so
7f3fa65f4000-7f3fa65f6000 rw-p 001c4000 103:08 1316509                   /lib/x86_64-linux-gnu/libc-2.23.so
7f3fa65f6000-7f3fa65fa000 rw-p 00000000 00:00 0 
7f3fa65fa000-7f3fa6610000 r-xp 00000000 103:08 1315453                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f3fa6610000-7f3fa680f000 ---p 00016000 103:08 1315453                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f3fa680f000-7f3fa6810000 rw-p 00015000 103:08 1315453                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f3fa6810000-7f3fa6982000 r-xp 00000000 103:08 524476                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f3fa6982000-7f3fa6b82000 ---p 00172000 103:08 524476                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f3fa6b82000-7f3fa6b8c000 r--p 00172000 103:08 524476                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f3fa6b8c000-7f3fa6b8e000 rw-p 0017c000 103:08 524476                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f3fa6b8e000-7f3fa6b92000 rw-p 00000000 00:00 0 
7f3fa6b92000-7f3fa785f000 r-xp 00000000 103:08 921733                    /usr/local/lib/libopencv_core.so.3.4.3
7f3fa785f000-7f3fa7a5f000 ---p 00ccd000 103:08 921733                    /usr/local/lib/libopencv_core.so.3.4.3
7f3fa7a5f000-7f3fa7a6b000 r--p 00ccd000 103:08 921733                    /usr/local/lib/libopencv_core.so.3.4.3
7f3fa7a6b000-7f3fa7a91000 rw-p 00cd9000 103:08 921733                    /usr/local/lib/libopencv_core.so.3.4.3
7f3fa7a91000-7f3fa7a96000 rw-p 00000000 00:00 0 
7f3fa7a96000-7f3fa7eaf000 r-xp 00000000 103:08 921850                    /usr/local/lib/libopencv_imgcodecs.so.3.4.3
7f3fa7eaf000-7f3fa80ae000 ---p 00419000 103:08 921850                    /usr/local/lib/libopencv_imgcodecs.so.3.4.3
7f3fa80ae000-7f3fa80b4000 r--p 00418000 103:08 921850                    /usr/local/lib/libopencv_imgcodecs.so.3.4.3
7f3fa80b4000-7f3fa80bf000 rw-p 0041e000 103:08 921850                    /usr/local/lib/libopencv_imgcodecs.so.3.4.3
7f3fa80bf000-7f3fa80c0000 rw-p 00000000 00:00 0 
7f3fa80c0000-7f3fa818b000 r-xp 00000000 103:08 921889                    /usr/local/lib/libopencv_features2d.so.3.4.3
7f3fa818b000-7f3fa838a000 ---p 000cb000 103:08 921889                    /usr/local/lib/libopencv_features2d.so.3.4.3
7f3fa838a000-7f3fa838f000 r--p 000ca000 103:08 921889                    /usr/local/lib/libopencv_features2d.so.3.4.3
7f3fa838f000-7f3fa8391000 rw-p 000cf000 103:08 921889                    /usr/local/lib/libopencv_features2d.so.3.4.3
7f3fa8391000-7f3fa8392000 rw-p 00000000 00:00 0 
7f3fa8392000-7f3fa8465000 r-xp 00000000 103:08 527378                    /usr/lib/x86_64-linux-gnu/libcholmod.so.3.0.6
7f3fa8465000-7f3fa8664000 ---p 000d3000 103:08 527378                    /usr/lib/x86_64-linux-gnu/libcholmod.so.3.0.6
7f3fa8664000-7f3fa8665000 r--p 000d2000 103:08 527378                    /usr/lib/x86_64-linux-gnu/libcholmod.so.3.0.6
7f3fa8665000-7f3fa8666000 rw-p 000d3000 103:08 527378                    /usr/lib/x86_64-linux-gnu/libcholmod.so.3.0.6
7f3fa8666000-7f3fa86c0000 r-xp 00000000 103:08 918726                    /usr/local/lib/libg2o_types_sba.so
7f3fa86c0000-7f3fa88bf000 ---p 0005a000 103:08 918726                    /usr/local/lib/libg2o_types_sba.so
7f3fa88bf000-7f3fa88c3000 r--p 00059000 103:08 918726                    /usr/local/lib/libg2o_types_sba.so
7f3fa88c3000-7f3fa88c4000 rw-p 0005d000 103:08 918726                    /usr/local/lib/libg2o_types_sba.so
7f3fa88c4000-7f3fa88df000 r-xp 00000000 103:08 918717                    /usr/local/lib/libg2o_stuff.so
7f3fa88df000-7f3fa8adf000 ---p 0001b000 103:08 918717                    /usr/local/lib/libg2o_stuff.so
7f3fa8adf000-7f3fa8ae0000 r--p 0001b000 103:08 918717                    /usr/local/lib/libg2o_stuff.so
7f3fa8ae0000-7f3fa8ae1000 rw-p 0001c000 103:08 918717                    /usr/local/lib/libg2o_stuff.so
7f3fa8ae1000-7f3fa8ae2000 rw-p 00000000 00:00 0 
7f3fa8ae2000-7f3fa8b3f000 r-xp 00000000 103:08 918719                    /usr/local/lib/libg2o_core.so
7f3fa8b3f000-7f3fa8d3e000 ---p 0005d000 103:08 918719                    /usr/local/lib/libg2o_core.so
7f3fa8d3e000-7f3fa8d40000 r--p 0005c000 103:08 918719                    /usr/local/lib/libg2o_core.so
7f3fa8d40000-7f3fa8d41000 rw-p 0005e000 103:08 918719                    /usr/local/lib/libg2o_core.so
7f3fa8d41000-7f3fa8d67000 r-xp 00000000 103:08 1316495                   /lib/x86_64-linux-gnu/ld-2.23.so
7f3fa8f06000-7f3fa8f18000 rw-p 00000000 00:00 0 
7f3fa8f64000-7f3fa8f66000 rw-p 00000000 00:00 0 
7f3fa8f66000-7f3fa8f67000 r--p 00025000 103:08 1316495                   /lib/x86_64-linux-gnu/ld-2.23.so
7f3fa8f67000-7f3fa8f68000 rw-p 00026000 103:08 1316495                   /lib/x86_64-linux-gnu/ld-2.23.so
7f3fa8f68000-7f3fa8f69000 rw-p 00000000 00:00 0 
7fff11f01000-7fff11f21000 rwxp 00000000 00:00 0                          [stack]
7fff11f21000-7fff11f22000 rw-p 00000000 00:00 0 
7fff11f62000-7fff11f65000 r--p 00000000 00:00 0                          [vvar]
7fff11f65000-7fff11f67000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
[1]    11714 abort (core dumped)  ./ba_example

Anybody know why?

@sjulier
Copy link
Collaborator

sjulier commented Apr 13, 2019

Can you build in debug and try valgrind? That's typically pretty good at spotting things like memory corruption issues and initialized variables.

@lucasjinreal
Copy link
Author

@sjulier I haven't managed built which this repo contains commit g2o version, but with newest g2o clone from master branch, it's easy to reveal this bug. And currently still have no idea what's going on..

@sjulier
Copy link
Collaborator

sjulier commented Apr 15, 2019

I don't have a machine in front of me to compile and test your code. valgrind will give a deep dive of what the code is doing.

@YangSiri
Copy link

YangSiri commented Nov 9, 2019

Hi, @jinfagang , I'm facing the same problem. Did you solve it?

The code you mentioned here is like a 'textbook'. My problem comes from when i new a vertex or a edge like [g2o::VertexSE3Expmap *v = new g2o::VertexSE3Expmap();] which is defined in g2o, the whole project collapsed as SIGART no matter what is in your cpp. However, using custom vertex or edge is okay. Do you have any comments on this?

Looking forward to generous help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants