2017-10-14 5 views
0

私はノードアドオンを開発しています。私はセグメンテーションフォールトで奇妙な問題に直面しています。私はJavaScriptの、プログラムが終了からとセグメンテーションフォールトでこのメソッドを呼び出すときノードアドオン奇妙なセグメンテーションフォールト

struct ComputeContext { 
    int test = 1; 
}; 

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

奇妙な事は、次のとおりです。次のようにMyClass.ccでは、私は、構造体とNAN_METHODを宣言しました。ただし、テストを初期化しないとint test;、segfaultをクラッシュせず報告しません。セグメンテーション違反を検出するために、私はsegfault-handlerパッケージを使用しています。

誰かがここで何が起こっているかについての手がかりを持っているのでしょうか? sidenoteとして、MyClass :: Fooは静的メソッドであり、違いがあるかどうかはわかりません。

+0

これをデバッグしてクラッシュの原因となっている行を確認しましたか? – VTT

+0

残念ながら、私はデバッグのための環境を設定していません。私はソースからv8、libuv、nodeをビルドする必要があると思います。しかし、とにかく、segfaultハンドラは、 'info.GetReturnValue()。Set(Nan :: New(true));'でクラッシュすると言っています。実際、その動作は非常に奇妙です。 – justadudewhohacks

+0

拡張機能をデバッグシンボルでビルドし、デバッガで実行するだけで済みます。 – VTT

答えて

2

私は別の.ccファイルで定義されたComputeContextと呼ばれる別の構造体を持っていました。 MSVCはエラーを投げず、両方のファイルをリンクしました。これにより、構造体のインスタンスを作成する際にセグメンテーション違反が発生しました。