cygwin_exception::open_stackdumpfile: Dumping stack trace to *.exe.stackdump

18,775

You are using a dynamic sized Matrix X, and you try to comma initialize it without setting its size first. This will raise an exception:

As explained here:

Eigen offers a comma initializer syntax which allows the user to easily set all the coefficients of a matrix, vector or array. Simply list the coefficients, starting at the top-left corner and moving from left to right and from the top to the bottom. The size of the object needs to be specified beforehand.

and here:

The coefficients must be provided in a row major order and exactly match the size of the matrix. Otherwise an assertion is raised.

So resize your matrix first:

TestClass::TestClass() {
    X.resize (1,3); 
    X << 0, 1, 2;
}
Share:
18,775

Related videos on Youtube

M.A.
Author by

M.A.

Updated on June 04, 2022

Comments

  • M.A.
    M.A. almost 2 years

    I am getting "cygwin_exception::open_stackdumpfile: Dumping stack trace to TestProject.exe.stackdump" error. My project is nothing but a C++ HalloWorld project that contains an additional class in which I set and get a variable. I am getting this error at the line I try to set a matrix variable of type Eigen. Here is my code:

    TestProject.cpp

    #include <iostream>
    #include "TestClass.hpp"
    
    using namespace std;
    
    int main() {
        cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
        TestClass testClass;
        Eigen::MatrixXd XX = testClass.getVariable();
        cout << "X = " << XX;
        return 0;
    }
    

    TestClass.hpp:

    #ifndef TESTCLASS_HPP_
    #define TESTCLASS_HPP_
    #include <Eigen/Core>
    #include <Eigen/Eigenvalues>
    #include <unsupported/Eigen/MatrixFunctions>
    #include <Eigen/Geometry>
    
    
    class TestClass {
    private:
        Eigen::MatrixXd X;
    
    public:
        TestClass();
        void setVariable(Eigen::MatrixXd);
        Eigen::MatrixXd getVariable();
        virtual ~TestClass();
    };
    
    
    #endif /* TESTCLASS_HPP_ */
    

    and finally the TestClass.cpp:

    #include "TestClass.hpp"
    
    using namespace std;
    
    TestClass::TestClass() {
        X << 0, 1, 2;
    
    }
    
    TestClass::~TestClass() {
        // TODO Auto-generated destructor stub
    }
    
    void TestClass::setVariable(Eigen::MatrixXd x){
        X = x;
    }
     /* namespace std */
    
    Eigen::MatrixXd TestClass::getVariable(){
        return X;
    }
    

    The output I get in the Console is:

    !!!Hello World!!!
          0 [main] TestProject 8416 cygwin_exception::open_stackdumpfile: Dumping stack trace to TestProject.exe.stackdump
    

    It is worth mentioning that when I change the type of the class variable X (and all related types in the methods and the header file) into an integer I don't get this error and the code compiles and runs.

    I would appreciate any help since I didn't find useful info online.

    Thanks