2009-06-16 5 views

答えて

35

セグメント違反です。たぶん、ぶら下がっているポインタの問題、またはある種のバッファオーバーフロー。

SIGSSEGVは、セグメンテーションフォルトの問題に基づいてシグナルを終了させるシグナルです。

ダングリングポインタとオーバーフローの問題を確認します。

コアダンプを有効にすると、問題を特定するのに役立ちます。

117

不正なメモリアクセスから得られる誤差であるSEGV、の2つの一般的な種類があります

  1. ページが間違った権限を持っていたアクセスされたが。たとえば、読み取り専用でしたが、コードが書き込もうとしました。これはSEGV_ACCERRと報告されます。
  2. アプリケーションのアドレススペースにまったくマッピングされていないページにアクセスしました。これは、NULLポインタまたは小さな整数値で破損したポインタの逆参照によって生じることがよくあります。これはSEGV_MAPERRと報告されています。

SEGV_MAPERRのソート(索引付けされたLinuxソースコード)のドキュメントは、http://lxr.free-electrons.com/ident?i=SEGV_MAPERRです。

+7

この1つがより完全で役立つ場合、なぜhttp://stackoverflow.com/a/1000010/358475と答えられましたか? – OldPeculier

+2

質問と他の答えは私の答えよりもずっと古いです。私はそれを改善するために他の答えを編集しました。 – ahcox

+0

これらをEXC_BAD_ACCESS例外タイプと区別する状況を知ることは興味深いでしょう。例えばマップされていますが、割り当てられていないページです(/最近割り当てが解除されています)? – Bobjt

関連する問題