none
gdiplus.dllが異常終了する原因 RRS feed

  • 質問

  • OS:Windows 7 x64

    VS:2012 Pro

    --

    異常終了内容

    ---------------------------------------------------------------------------------------------------------------------------------------

    障害が発生しているアプリケーション名: A.exe、バージョン: 1.0.0.4、タイム スタンプ: 0x54ffc3ad
    障害が発生しているモジュール名: gdiplus.dll、バージョン: 6.1.7601.18120、タイム スタンプ: 0x515bc240
    例外コード: 0xc00000fd
    障害オフセット: 0x00000000000783b1
    障害が発生しているプロセス ID: 0x4d8
    障害が発生しているアプリケーションの開始時刻: 0x01d0610ff6645109
    障害が発生しているアプリケーション パス: C:\Test\A.exe
    障害が発生しているモジュール パス: C:\windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_2b25b14c71ebf230\gdiplus.dll

    ---------------------------------------------------------------------------------------------------------------------------------------

    Visual Studio 2012で開発したプログラムを放置(凡そ1日以上)し続けていると上記の問題が原因でモジュールが異常終了します。

    どのような問題が原因でgdiplusが異常終了するのでしょうか?

    グラフィックに対しての負荷が原因でしょうか?

    モジュール概要

    A,B,C.exeは、YまたはZ.exeを内部処理で追加し表示するプログラム。

    A.exeはボタン切り替えで表示非表示を切り替える(Visible True False)

    A.exe : 異常終了するexe (Y.exeとZ.exeを同時に起動)

    B.exe:問題なし(Y.exeを起動)

    C.exe:問題なし(Z.exeを起動)

    よろしくお願いします。


    ※追記

    今々返信していただいた内容を踏まえ調査中となります。有難うございます。

    • 編集済み mogja 2015年5月30日 12:35 調査中について追記
    2015年5月26日 5:57

回答

  • エラー発生時のプロセス ダンプを採取して、それを確認すれば原因箇所を特定できるかも。
    下記サイトを参考にプロセス ダンプを生成させる設定を行えば、スタック オーバーフロー (例外コード: 0xc00000fd) を引き起こした状態のダンプ ファイルを採取できると思います。

    -------------------------------------------
    Windows7のWERでアプリケーションのクラッシュダンプを取得する方法

    http://d.hatena.ne.jp/replication/20140427/1398575903
     -------------------------------------------

    あとは、採取したダンプ ファイルを VS2012 や WinDBG を使ってその状態を確認すれば、原因箇所を特定できると思います。

    • 回答の候補に設定 星 睦美 2015年5月28日 2:09
    • 回答としてマーク mogja 2015年5月30日 12:33
    2015年5月26日 10:46
  • 0xC00000FDはSTATUS_STACK_OVERFLOWであり、関数呼び出しが深い、ローカル変数の使用し過ぎなどが原因で発生します。gdiplus.dllに問題がある可能性も少しはありますが、一般的には呼び出し側に原因がある場合がほとんどです。

    デバッガを使用するなどしてどのような状況でこの障害が発生したのか、その際の呼び出し元は適切だったかを調査すべきです。

    • 回答の候補に設定 星 睦美 2015年5月28日 2:09
    • 回答としてマーク mogja 2015年5月30日 12:34
    2015年5月26日 7:05
  • とりあえず以下辺りが参考になりませんでしょうか?

     【HolonEnterprise】Windowsアプリケーション実行時のソフトウェア例外「0xC00000FD」発生について
     http://www.support.nec.co.jp/View.aspx?id=3150106539
     
     WindowsのPHPでエラーが発生するので、スタックサイズを増やして解決する
     http://uzulla.hateblo.jp/entry/2013/08/14/230551


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2015年5月28日 2:09
    • 回答としてマーク mogja 2015年5月30日 12:34
    2015年5月26日 6:19
    モデレータ

すべての返信

  • とりあえず以下辺りが参考になりませんでしょうか?

     【HolonEnterprise】Windowsアプリケーション実行時のソフトウェア例外「0xC00000FD」発生について
     http://www.support.nec.co.jp/View.aspx?id=3150106539
     
     WindowsのPHPでエラーが発生するので、スタックサイズを増やして解決する
     http://uzulla.hateblo.jp/entry/2013/08/14/230551


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2015年5月28日 2:09
    • 回答としてマーク mogja 2015年5月30日 12:34
    2015年5月26日 6:19
    モデレータ
  • 0xC00000FDはSTATUS_STACK_OVERFLOWであり、関数呼び出しが深い、ローカル変数の使用し過ぎなどが原因で発生します。gdiplus.dllに問題がある可能性も少しはありますが、一般的には呼び出し側に原因がある場合がほとんどです。

    デバッガを使用するなどしてどのような状況でこの障害が発生したのか、その際の呼び出し元は適切だったかを調査すべきです。

    • 回答の候補に設定 星 睦美 2015年5月28日 2:09
    • 回答としてマーク mogja 2015年5月30日 12:34
    2015年5月26日 7:05
  • エラー発生時のプロセス ダンプを採取して、それを確認すれば原因箇所を特定できるかも。
    下記サイトを参考にプロセス ダンプを生成させる設定を行えば、スタック オーバーフロー (例外コード: 0xc00000fd) を引き起こした状態のダンプ ファイルを採取できると思います。

    -------------------------------------------
    Windows7のWERでアプリケーションのクラッシュダンプを取得する方法

    http://d.hatena.ne.jp/replication/20140427/1398575903
     -------------------------------------------

    あとは、採取したダンプ ファイルを VS2012 や WinDBG を使ってその状態を確認すれば、原因箇所を特定できると思います。

    • 回答の候補に設定 星 睦美 2015年5月28日 2:09
    • 回答としてマーク mogja 2015年5月30日 12:33
    2015年5月26日 10:46