2017-10-14 4 views
0

Ich entwickle ein Knoten-Addon und ich habe einige seltsame Probleme mit Segmentierung Fehler. Im MyClass.cc erklärte ich eine Struktur und ein NAN_METHOD wie folgt:Nodejs native Addon seltsame Segmentierung Fehler

struct ComputeContext { 
    int test = 1; 
}; 

NAN_METHOD(MyClass::Foo) { 
    ComputeContext ctx; 
    info.GetReturnValue().Set(Nan::New(true)); 
} 

Die seltsame Dinge ist, wenn ich diese Methode von JavaScript aufrufen, das Programm beendet und mit einem Segmentierungsfehler. Wenn ich jedoch den Test nicht initiiere, z. int test;, stürzt es nicht ab oder meldet einen Segfault. Um Segmentierungsfehler zu erkennen, verwende ich das segfault-handler-Paket.

Vielleicht hat jemand eine Ahnung, was hier vor sich geht? Als eine Randbemerkung ist MyClass :: Foo eine statische Methode, nicht sicher, ob das einen Unterschied macht.

+0

Haben Sie versucht, es zu debuggen und zu überprüfen, welche Zeile den Absturz verursacht? – VTT

+0

Leider habe ich die Umgebung zum Debuggen nicht eingerichtet. Ich denke, das würde erfordern, v8, libuv und node aus der Quelle zu bauen. Aber wie auch immer, der Segfault-Handler sagt, dass er bei 'info.GetReturnValue() abstürzt. Set (Nan :: New (true));'. In der Tat ist das Verhalten sehr seltsam. – justadudewhohacks

+0

Es würde nur erfordern, Ihre Erweiterung mit Debug-Symbolen zu erstellen und es unter Debugger auszuführen. – VTT

Antwort

2

Ok, stellte sich heraus, ich hatte eine andere Struktur namens ComputeContext in einer anderen .cc-Datei definiert. MSVC hat keinen Fehler ausgelöst und beide Dateien verknüpft. Dies verursachte die Segmentierungsfehler beim Erstellen von Instanzen der Struktur.