1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

SIGBUS error when porting from X86 to ARM

Discussion in 'MFC' started by Ericxx, Aug 31, 2010.

  1. Ericxx

    Ericxx New Member

    Joined:
    Aug 31, 2010
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Hello,

    I came with a SIGBUS error when importing a C++ code from X86 to ARM. Below is the code snippet where problem occurs, and appreciate your suggestions.


    Code:
    class clsMatrix { 
    protected: 
       double *pM; 
       int m; 
       int n; 
    
       BOOL m_bAutoDelete; 
       //m_bAutoDeletenewbAutoDeleteTRUEbAutoDeleteFALSE 
    
    public: 
       clsMatrix(); 
       clsMatrix(int m, int n, double *p = NULL, BOOL bAssign = FALSE); 
    
       ~clsMatrix(); 
    
       void Reset(); 
       void Reset(int i, int j, double *p = NULL, BOOL bAssign = FALSE); 
    
    //   Attributes 
       int GetM() { return m; } 
       int GetN() { return n; } 
       double *GetP() { return pM; } 
    
       BOOL EqualSize(clsMatrix &M) { return ((m == M.m) && (n == M.n)); } 
    
    public: 
    //   Operators 
       double * operator [] (int i) { return pM+i*n; } 
    
       clsMatrix & operator = (clsMatrix &M); 
       clsMatrix & operator = (double *p); 
       clsMatrix & operator = (double x); 
       clsMatrix & operator += (clsMatrix &M); 
       clsMatrix & operator += (double *p); 
       clsMatrix & operator -= (clsMatrix &M); 
       clsMatrix & operator -= (double *p); 
       clsMatrix & operator *= (clsMatrix &mtrx);            // 
       clsMatrix & operator *= (double *p); 
       clsMatrix & operator *= (double a); 
       clsMatrix & operator /= (double a); 
    
       static void X(clsMatrix &mtrx1, clsMatrix &mtrx2, clsMatrix &mtrx);            //multiple 
       static void X(clsMatrix &mtrx1, clsVector &vctr2, clsVector &vctr); 
       static void X(clsVector &vctr1, clsMatrix &mtrx2, clsVector &vctr); 
       static void T(clsMatrix &mtrx1, clsMatrix &mtrx);            //transpose 
       static void R(clsMatrix &mtrx1, clsMatrix &mtrx);            //inverse 
       static void S(clsMatrix &mtrx1, int m0, int m1, int n0, int n1, clsMatrix &mtrx, int m = 0, int n = 0); 
       static void S(clsVector &vctr1, int m0, int m1, clsVector &vctr, int m = 0); 
    
       double e(); 
       double e2(); 
       double ei(); 
    
    public: 
       BOOL LoadT(char *pszFile); 
       BOOL SaveT(char *pszFile); 
    
       friend class clsVector; 
    }; 
    
    clsMatrix::clsMatrix() 
    { 
       m = n = 0; 
       pM = NULL; 
       m_bAutoDelete = FALSE; 
    } 
    
    
    the problem happens in the clsMatrix constructor, whenever a clsMatrix object is declared, the SIGBUS error occurs, unless the contructor is empty with all statements being commented out.

    Regards,
    Eric
     

Share This Page