0

機能を追加するためにプログラムによってロードされるモジュールを作成していますが、理解できない非常に奇妙なクラッシュに遭遇しました。

まず、MSVS2015 を使用して Windows でまったく同じものをコンパイルしましたが、問題なく動作します。ただし、Unix (Solaris 10) で GCC 4.9.3 を使用してコンパイルすると、コードの 2 回目の実行時にセッションがクラッシュし、クラッシュする原因を多かれ少なかれ正確に絞り込むことができました。 Eigen::MatrixXf オブジェクトのコピー。

クラッシュする非常に単純な例は次のとおりです。

void entry()
{
    // Initialize matrix1
    Eigen::MatrixXf test(3, 3);

    // Fill it with 3x3 values.
    test << 1, 2, 3, 4, 5, 6, 7, 8, 9;

    // Initialize matrix2
    Eigen::MatrixXf test2(3, 3);

    // Copy
    test2 = test;
}

ただし、行列のコピーを伴わないものはすべて問題なく動作するようで、非常に単純な実行可能プログラムを作成すると、配列を問題なくコピーできます。

Makefile の引数を絞り込むことができましたが、違いはありません。

CC_FLAGS = -I$(INC) -fPIC
LINK_FLAGS = -shared

これの原因が何であるかについて、私は本当にアイデアがありませんので、誰かが私を正しい方向に向けることができることを願っています. 私は Unix 開発にまったく慣れていないので、これをデバッグする最善の方法がわからないので、そこの助けもありがたいです。

注意すべき点は、Solaris 10 (x86) 用の公式バイナリがなかったため、自分で使用した gcc のバージョンをビルドする必要があったことですが、エラーはなく、これ以外のすべてで非常にうまく機能します。

ありがとう!

4

1 に答える 1