私はUnixで動作しているプロセスからコアを見ています。 通常、私はバックトレースに自分の周りやルートを使ってメモリの問題を特定できます。 この場合、どのように進めるかわかりません。Unix上のセグメンテーションフォルト - スタック破損の可能性あり
まず、バックトレースは、私がもっと多くを期待する3フレームしか与えません。 これらのフレームでは、提示されたすべての関数パラメータは完全に無効に見えます。 私が期待するものはありません。
いくつかのポインタパラメータは、それらに関連した以下のしている - これは完全なスタック破損のいくつかの種類を示唆しているアドレス
でメモリにアクセスすることはできません。 私はlibumemでプロセスを実行し、すべてのバッファがクリーンであると報告されました。
umem_statusも何も報告しませんでした。
だから、基本的に私は困惑しています。 考えられる原因は何ですか? libumemがエラーを報告していないように見えるので、コードで何を探すべきですか。
どのように私はfurhterをデバッグすることができますか?私は考慮すべきmdbの任意の余分な機能?
ありがとうございました。
スタック内の最後の正常なポイントを(手動によるトレースを介して)見つけることができますか?バッファオーバーランのように聞こえる。 –
は万が一C++に関与していますか?静的初期化問題のように聞こえる。 –
は、これらの3つのフレームを貼り付けて、私たちがそれらが何であるかを見ることができるので役に立ちます。 –