Ich schreibe ein Modul, das von einem Programm geladen wird, um Funktionalität hinzuzufügen, und ich bin über einen wirklich seltsamen Absturz gestolpert, den ich nicht verstehen kann.Plugin mit Eigen stürzt beim zweiten Mal ab
Zunächst einmal habe ich genau die gleiche Sache in Windows mit MSVS2015 kompiliert, wo es ohne Probleme funktioniert. Wenn ich es jedoch mit GCC 4.9.3 unter Unix (Solaris 10) kompiliere, stürzt die Sitzung beim zweiten Ausführen des Codes ab, und ich habe es auf mehr oder weniger genau eingegrenzt, was es stürzt: Kopieren von Eigen :: MatrixXf-Objekten.
ein sehr einfaches Beispiel, das es Absturz macht, ist die folgende:
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;
}
jedoch alles, was, nicht beinhalten Kopieren scheint Matrizen völlig in Ordnung zu arbeiten, und wenn ich bauen ein sehr einfaches ausführbares Programm, ich kann Arrays fein kopieren.
Ich habe es geschafft, die Argumente in meinem Makefile zu verengen, aber es gibt keinen Unterschied:
CC_FLAGS = -I$(INC) -fPIC
LINK_FLAGS = -shared
ich aus Ideen wirklich bin, was die Ursache dafür sein könnte, also bin ich hoffend, dass jemand mir in die richtige Richtung zeigen kann. Ich bin ziemlich neu in Unix-Entwicklung und nicht sicher, was der beste Weg, um dies zu debuggen wäre, so Hilfe dort ist auch geschätzt.
Wert ist, dass ich die Version von gcc selbst bauen musste, da es keine offizielle Binärdatei für Solaris 10 (x86) gab, aber es gab keine Fehler und es funktioniert sehr gut für alles andere als das.
Danke!
Welche Version von Eigen? –
Sorry, ich habe vergessen, das zu erwähnen. Es ist die neueste stabile Version: 3.2.8. –
Ich kann es nicht mit gcc 4.9.2 auf Ubuntu reproduzieren. Kannst du ein [MCVE] erstellen? –