2013-02-19 28 views
9

私のDelphiのプログラムは、NTサービスとして実行され、2ヶ月以上の罰金を実行してきたし、それが突然停止し、クラッシュダンプを生成:tca_shctisvc_ip.exe、バージョン:7.1.0.1843アプリケーション名をフォールティングアドレス0の例外0xc0000005でプログラムがクラッシュしたとき、私は何をしますか?

を、タイムスタンプ:0x2a425e19フォールティングモジュール名:不明、バージョン:0.0.0.0、タイムスタンプ:0x00000000の例外コード:0xc0000005で障害オフセット:0x00000000の

Windowsのイベントの情報に基づいてから作業する本当のアドレスがありませんでしたログ。私はWinDbgにミニ・ダンプをロードできましたが、例外がありましたが、スタック・フレームに問題があると言いました。別のツール(Viewminidump)が実行中のスレッドのスタックを表示できました。

どこからこの問題を解決できますか?

答えて

24

例外コード0xc0000005はアクセス違反です。フォールト・オフセットのAVが0x00000000の場合、サービスコード内の何かがnilポインターにアクセスしています。アクセスしているものを見つけるために実行中のサービスをデバッグするだけで済みます。デバッガ内でそれを実行できない場合は、少なくとも、サードパーティの例外ロガーフレームワーク(EurekaLogまたはMadExceptなど)をインストールして、AVの時点でサービスが行っていたことを確認します。

+5

+1例外ロガーを提案します。これはデバッガそのもの以外にも私が見つけた#1の最も有用なデバッグツールです。 –

0

スタックフレームの問題は、スタックの破損(本当に恐ろしい獣)、最適化、またはC/C++/C#/ Delphiなどのミキシングフレームワークやそれ以外の狂気を示す可能性があります。スタックフレームに関して絶対的な基準はありません。 (一部の言語にはそれらがありません!)

だから、私はスタックフレームの問題に少し悩まされ、それを無視して、Remyの答えを使用することを勧めます。

0

私はマイクロソフトから強化された緩和経験ツールキット(EMET)を使用していたと私は私の中でjavaw.exeの上でEMETの機能を無効にすることで見つけ、

Faulting application name: javaw.exe, version: 8.0.51.16, time stamp: 0x55763d32 
Faulting module name: mscorwks.dll, version: 2.0.50727.5485, time stamp: 0x53a11d6c 
Exception code: 0xc0000005 
Fault offset: 0x0000000000501090 
Faulting process id: 0x2960 
Faulting application start time: 0x01d0c39a93c695f2 
Faulting application path: C:\Program Files\Java\jre1.8.0_51\bin\javaw.exe 
Faulting module path:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll 

を別のアプリケーションと同じ問題になっていましたこれは障害の発生したアプリケーションであるため、アプリケーションを正常に実行することができました。メモリ上にセキュリティ保護された類似のソフトウェアがないことを確認してください。

+0

OracleはDelphiを使ってJava SE 8 JREを構築しているようです。 – mjn

関連する問題