プロが教える店舗&オフィスのセキュリティ対策術

UNIXで、CよりOracleのSQL*Loaderを使用しています。
CSVファイル->Oracleのテーブル
でデータを挿入する際に、テーブルのカラムサイズが
足りずにエラーが発生し、最大エラー件数を超えたので
処理がエラーで終了しました。

その際に、
セグメンテーション・フォールト(coredump)
というメッセージが表示されます。

ついでに補足するならば、Cのプログラムを直接起動すると、
上記エラーメッセージ出力後、プロセスは終了しますが、
別プログラムより起動した場合(UID=root)、
プロセスが終了してくれません。

上記メッセージの意味と、なぜrootからだと
プロセスが終了しないのか、が分かりません。
どなたかお分かりになる方、よろしくお願いします。

A 回答 (1件)

セグメンテーション・フォールトは、プログラムが、アクセスを禁止されて


いるメモリー領域にアクセスしようとしたということです。大抵はプログラムの
バグです。
coredumpは、OSがその時のメモリーの状態をcoreというファイルに保存した
ということです。
UIDがrootの場合にプロセスが終了しない理由は、はっきりとはわかりませんが、
上記のことを考えれば、root権限ならばアクセスできるところにアクセスして
いるのかもしれません。とすると、プロセスが終了しないのは、結構危険な
状態なのかもしれません。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!
プログラムを調べたところ、ご指摘の通り、バグがありました。
修正後は正常に動いています。
プロセスが終了できなかったのも、おそらくranxさんの
予想通りではないかと思われます。

大変助かりました。どうもありがとうございます。

お礼日時:2001/09/05 19:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!