2

SAS バッチ コマンドの実行中にエラーが発生しました。バッチ コマンドは、IBM Platform LSF によって実行されます。 bhistコマンドは次のように表示されます。

ここに画像の説明を入力

ジョブは終了コード 139 で終了しました。LSF 管理者ガイドによると、システム シグナルで終了したジョブは、128 より大きい終了コードとして LSF によって返されます。したがって、シグナル コード =139-128 -> 11 - SIGSEGV です。

このコードはどういう意味ですか? 問題の根本原因を特定するにはどうすればよいですか? 昨日、ジョブはエラーなしで機能しました。

4

1 に答える 1

2

イゴール、

この問題は、OS またはハードウェアが原因で発生します。もう一度ジョブを実行すると、おそらく問題なく実行されるでしょう。

SIGSEGV はメモリ セグメンテーション エラーであり、必ずしも SAS ジョブが原因ではなく、さまざまな方法で発生する可能性がありますが、通常は 1 回限りのエラーです。

セグメンテーション違反の典型的な原因は次のとおりです。

  • ヌル ポインターの逆参照 – これは、メモリ管理ハードウェアによって特殊なケースです
  • 存在しないメモリアドレス (プロセスのアドレス空間外) にアクセスしようとしています
  • プログラムが権限を持っていないメモリにアクセスしようとしています (プロセス コンテキスト内のカーネル構造など)。
  • 読み取り専用メモリ (コード セグメントなど) に書き込もうとしている

これらは、多くの場合、無効なメモリ アクセスを引き起こすプログラミング エラーによって引き起こされます。

  • 初期化されていないポインタ (ランダムなメモリ アドレスを指すワイルド ポインタ) への逆参照または代入
  • 解放されたポインター (解放/割り当て解除/削除されたメモリを指すダングリング ポインター) への逆参照または割り当て
  • バッファオーバーフロー
  • スタックオーバーフロー
  • 正しくコンパイルされないプログラムを実行しようとしています。(ソース: https://en.wikipedia.org/wiki/Segmentation_fault )

エラーを追跡したい場合は、プラットフォームを知る必要があります。たとえば、このエラーは Windows 管理ツールでキャプチャされ、詳細情報を見つけることができます。他のプラットフォームでは、この種のエラーをさまざまな方法でキャプチャします。

お役に立てば幸いです。

よろしく、 ヴァシリー

于 2016-06-21T13:06:57.290 に答える