Novell(クラウドコンピューティングのセキュリティ・仮想化ソリューションを実現)

 

「セグメント違反」の意味

This document (7001662) is provided subject to the disclaimer at the end of this document.

環境

Novell openSUSE
SUSE Linux
SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 10
SUSE Linux Enterprise Server 9
SUSE Linux Enterprise Server 8
SUSE Linux Openexchange Server 4.1
SUSE Linux Standard Server 8
SUSE Linux Enterprise Subscription Management tool
SUSE Linux Real Time
SUSE Linux Enterprise Desktop 11
SUSE Linux Enterprise Desktop 10
Novell Open Enterprise Server 2 (OES 2)
Novell Open Enterprise Server (Linuxベース)

問題の状況

エラー:セグメント違反の意味と、その対処法


解決策

LinuxなどのUnixオペレーティングシステムでは、「セグメンテーション違反」("signal 11"、"SIGSEGV"、"segmentation fault"、または略して"sig11"、"segfault"とも言われる)は、プロセスが属していないメモリアドレスにアクセスしようとしていることをシステムが検出したときに、カーネルがプロセスに送信する信号です。通常、これは違反するプロセスが終了した結果です。

背景および一般的な原因については、次に詳細が示されています。


追加情報

背景

現在の汎用ハードウェアには、「メモリ管理ユニット」(MMU)が搭載されています。このハードウェア機能はLinuxなどのオペレーティングシステムがこれを使用してメモリ保護を行います。これにより、別のプロセスがその他のメモリにアクセスしたり変更したりすることを防ぎます(特定のAPIを使用して厳格に制御される方法を除く)。これにより、プロセスは相互に囲い込まれ、切り分けられるため、トラブルシューティングが簡単になり、復元性が高まります。

「セグメンテーション違反」信号は、メモリ管理ユニットが属していないメモリアドレスを使用しようとしたことを、メモリ管理ユニットによって検出されたプロセスに送信されます。

一般的な原因:プログラミングエラー

適切に初期化されていないポインタ、または割り当て解除されたメモリを指すポインタからプロセスがメモリにアクセスしようとする場合、segfaultが発生する可能性があります。この場合、固有の状況においてsegfaultは特定のプロセスまたはバイナリで発生します。

このようなsegfaultに対処するには、すべての関連するサービスパックとメンテナンスアップデートを適用することから始めます。次に、問題が現在のコードでまだ再現される場合は、分析のためにアプリケーションコアダンプを取得します。この詳細は、TID 3054866 - How to obtain application core dumps(アプリケーションコアダンプの取得方法)に記載されています。

問題があるバイナリがNovell製品の一部として出荷されている場合は、Novellテクニカルサービスへのサービス要求を作成して、


  • コアダンプが生成された状況の説明と、
  • 影響されるシステムのsupportconfig -vレポート(supportconfigホームページ)、
  • 50 MBより小さい場合はコアダンプファイル自体を提供します。50MBを超える場合は、サービス要求がエンジニアに割り当てられるまで待機して、エンジニアと転送方法を相談します。

問題のあるバイナリがサードパーティによるものの場合、そのサポート部門にサポートを依頼してください。

一般的な原因:バイナリとライブラリの不一致

segfaultは、(完全な)互換性がないバイナリと共有ライブラリを組み合わせたプロセスで発生します。たとえば、ライブラリがライブラリのABI(アプリケーションバイナリインタフェース)を変更する方法でアップデートされ、ライブラリの内部バージョン番号がこれを反映するようにアップデートされていない場合に発生します。ライブラリの古いバージョンで作成されたバイナリは、それより新しいバージョンでロードされるとsegfaultを発生するようになります。


この場合は認識が困難で、対処する手順のリストはありません。この状況が疑われる場合は、次の事項を考慮します。


  • システムでのファイルの破損のチェック(supportconfig -vレポートでのrpm-verify.txtファイルの使用など)
  • /etc/ld.so.conf and /etc/ld.so.conf.d/*構成ファイルおよびLD_LIBRARY_PATHおよびLD_PRELOAD環境変数など、共有ライブラリに関連するシステムの設定のチェック
  • objdumpツールを使用した、ライブラリの組み込みライブラリ検索パス上書きのチェック(RPATH)

一般的な原因:ハードウェアまたはハードウェア構成の問題

segfaultが頻繁に発生する場合、または別のプロセスで発生する場合、発生に明確なパターンがない場合は、システムのハードウェア(メモリサブシステム)に問題がある、または低レベルのシステム構成設定が不適切であることを示します。この状況を処理する方法については、TID 3301593 - Linux system hangs or is unstable(Linuxシステムがハングする、または不安定)を参照してください。


Disclaimer

この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。

本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。

  • ドキュメントID: 7001662
  • 作成年月日: 15-OCT-2008
  • 修正年月日: 27-APR-2009
  • ドキュメントリビジョン:
  • 分類:
  • 対象NOVELL製品およびバージョン: Apache, Open Enterprise Server, OpenOffice, openSUSE, SUSE Linux Enterprise Desktop, SUSE Linux Enterprise Point of Service (NLPOS/SLEPOS), SUSE Linux Enterprise Real Time, SUSE Linux Enterprise Server, ZENworks Desktop Management, ZENworks Linux Management
  • カテゴリ: