ページの先頭です。
ここから本文です。

よくあるご質問(サポートFAQ)

【HolonEnterprise】Windowsアプリケーション実行時のソフトウェア例外「0xC00000FD」発生について

質問内容

Windowsアプリケーション実行時にソフトウェア例外「0xC00000FD」が発生します。
原因と対処法を教えてください。

回答内容

ソフトウェア例外「0xC00000FD」は、Windowsアプリケーション実行時にスタックオーバーフローエラーが発生したことを意味しています。
※OSエラーコードは、Microsoft Visual C++の include 配下にある winerror.h や winnt.h 等を調べることにより、その意味を知ることができます。
 また、その他のヘッダなどに書かれている可能性もありますので、Microsoft Visual C++ の include 配下 を 16進値/10進値 などで検索することが有効です。

原因:
アプリケーション実行時に、大きなローカルデータを使用している、関数呼び出しのネストが深いなどから、Windowsアプリケーションがスタック不足となっています。

対処法:
アプリケーション側での消費スタックサイズの縮小措置(データの削減・関数ネストの削減など)ができないかを検討してください。
アプリケーションで対応できない場合、スタックサイズを大きくすることで、Windowsアプリケーションを正常に動作させることが可能となります。

以下の方法で、スタックサイズを変更できます。
Windowsアプリケーションは、デフォルトで1MBのスタック領域を持っていますので、1MBより大きい値に変更しください。
どのくらい大きくすればいいかは、Windowsアプリケーションの構成によります。

①既に作成済みのEXEのスタックサイズを変更する。
VisualStudioのコマンド「editbin」でスタックサイズを変更してください。
  形式 : editbin /stack:<スタックサイズ> EXE名

②アプリケーション生成時にスタックサイズを指定する。
リンクオプションに「/STACK」オプションを指定してください。
指定しておくと、EXEを生成する際にスタックサイズが変更されますので、①のようにEXEを生成するたびに、スタックサイズを変更する必要がなくなります。
仕様ファイルのプログラム単位生成オプションの拡張オプションシートに以下のように指定します。
  /stack:<スタックサイズ>

すべてのEXEでスタックサイズを変更する場合は、環境設定の拡張オプション画面のリンクオプションに指定します。


補足)
 UNIXアプリケーションでも同様なことが発生します。
 ※HP-UXの場合、以下のようなエラーが発生します。
---
Pid XXXXX received a SIGSEGV for stack growth failure.
Possible causes: insufficient memory or swap space,
or stack size exceeded maxssiz.
セグメンテーション障害 (コアファイルが作られました。)
---

 UNIXでは、OSの設定でスタックサイズが決まっていますので、OSのコマンド「limit」でスタックサイズを変更してください。
   形式 : limit stacksize 変更後スタックサイズ

 カーネルで許可されている限界値までスタック領域を大きくするには、以下のコマンドを使用します。
   limit stacksize unlimit

【確認済みのバージョン】すべてのバージョン
【確認済みの対象OS】すべてのOS
【カテゴリー】トラブルシューティング

製品名カテゴリ

HolonEnterprise

  • コンテンツID: 3150106539
  • 公開日: 2013年11月21日
  • 最終更新日:2013年11月21日

アンケート

サポート情報充実のためアンケートにご協力をお願いいたします。



コメント欄:
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。