問題タブ [corrupted-state-exception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - AppDomain全体の破損状態例外(CSE)
一部の背景情報については、.NET 4.0はデフォルトでCSEをキャッチしなくなりました:http://msdn.microsoft.com/en-us/magazine/dd419661.aspx
新しいAppDomainでコードを実行するアプリに取り組んでいます。そのコードがCSEをスローした場合、処理されていない場合、例外はメインコードにバブルアップします。私の質問は、2番目のAppDomainのCSEがメインのAppDomainの状態を破損しないと安全に想定できるため、2番目のAppDomainを終了して、メインのAppDomainの実行を続行できるかどうかです。
c# - .NETでAccessViolationをキャッチする4.良いか悪いか?
ファイルにSECURITY_IDENTIFIER構造のオブジェクトがあります。この構造から所有者SIDを取得する必要があります。これを行うために、GetSecurityDescriptorOwner
WinAPI関数を呼び出して作成しますSystem.Security.Principal.SecurityIdentifier
(IntPtrを引数としてオーバーロードします)
問題は、ファイル内のこの構造が時々壊れているため、GetSecurityDescriptorOwnerから取得したポインターが無効であるということです。これはIntPtr.Zeroではなく、無効であるため、タイプのオブジェクトを作成すると、SecurityIdentifier
が取得されますAccessViolationException
。これは、単純なtry-catchでは.NET4ではキャッチできません。
私はそのような例外を捕らえることができる属性を知っているので、当分の間それを使用しましたが、私はこの解決策が好きではありません。Corrupted State Exceptions(CSE)をキャッチすることはお勧めしませんが、他の解決策はありません。このWinAPI関数は無効なポインタを返し、有効性を確認する方法がわかりません。何か案は?
アップデート
WinAPI
外部定義
アップデート
このコードは、SecurityIdentifierコンストラクターからCorruptedStateExceptionsをスローすることがあります。解決策はありますか?
c# - CorruptedStateExceptions を特定するより良い方法
オーバーヘッドを減らしてもう一度試してみましょう。
例外が CorruptedStateException かどうかを判断する方法は?
私が知っていることから、すべての CorruptedStateExceptions が (排他的に) 継承する共通のスーパークラスはなく、それらを識別するために使用できる他のプロパティ/フラグ/属性は見つかりませんでした。
今のところ、私ThirdPartyCall
が思い付くことができる最善の方法は、2 つのステップで作業することです。例外をキャッチする場合は CSE ではなく、キャッチするだけの場合は 1 つです。[HandleProcessCorruptedStateExceptions]
[SecurityCritical]
ThirdPartyCallInternal
ThirdPartyCallInternal
ThirdPartyCall
例外がアプリケーションをダウンさせる CorruptedStateException であるかどうかを判断する他の (よりクリーンで簡単な...) 方法はありますか?
c# - 例外が破損状態例外かどうかの検出
wkhtml2pdf を呼び出す Rotativa を呼び出すコードがいくつかあります。wkhtml2pdf.exe が Corrupted State Exception (CSE) をスローする原因になっていると思われます。CSE がスローされた場合は、それをキャッチしてログに記録したいので、CSE が発生している場所を追跡できます。
デバッガーでアプリを一晩実行したままにしておくと、戻ってくると VS がシャットダウンされます。再起動することもあれば、再起動しないこともあります。メモリ破損の疑い 私は調査を開始し、CSE 処理に出くわしました。
私はこのようなことをしています:
例外が General Catch の CSE であるかどうかを検出する方法はありますか?
私は、2 つの一般的な例外条項があるところを見ました。内側のものは CSE を処理せず、フラグを設定します。外側のものがフラグなしで呼び出された場合、それは CSE ですが、よりクリーンなものを望んでいます。私がやりたいのは、この悪い状態をログに記録し、それをアプリケーションに渡して正常にバブルアップさせることです。
VS2013 をダウンさせたイベント ログのエラーを見ると、次のようになります。
アプリケーション: devenv.exe フレームワーク バージョン: v4.0.30319 説明: 未処理の例外のため、プロセスが終了しました。例外情報: 例外コード c0000005、例外アドレス 4DA44C1F スタック: Microsoft.VisualStudio.Debugger.Clr.NativeDkmClrModuleInstance.ProcF4BC786AEBAC294EE9C4C0BB1B0F56A7 (IntPtr、IntPtr ByRef) で Microsoft.VisualStudio.Debugger.Clr.DkmClrModuleInstance.GetMetaDataImport() で Microsoft.IntelliTrace.IntelliTrace. .MetadataHelper..ctor(Microsoft.VisualStudio.Debugger.Clr.DkmClrModuleInstance) Microsoft.IntelliTrace.Concord.Integration.CpdeNotifyPointServiceAdapter.InstallBreakpoint(Microsoft.VisualStudio.Debugger.Clr.DkmClrModuleInstance、Microsoft.VisualStudio.Debugger.Interop.Internal.NP_INSTALL_REQUEST で)
Microsoft.IntelliTrace.Concord.Integration.CpdeNotifyPointServiceAdapter.BindToModule (Microsoft.VisualStudio.Debugger.Clr.DkmClrModuleInstance) で Microsoft.IntelliTrace.Concord.IntelliTraceProcessState.AlertModuleLoad (Microsoft.VisualStudio.Debugger.DkmModuleInstance) で Microsoft.IntelliTrace.Concord.NotifyPoints .NotifyPointManager.OnModuleInstanceLoad(Microsoft.VisualStudio.Debugger.DkmModuleInstance、Microsoft.VisualStudio.Debugger.DkmWorkList、Microsoft.VisualStudio.Debugger.DkmEventDescriptorS) Microsoft.VisualStudio.Debugger.EntryPoint.IDkmModuleInstanceLoadNotification_OnModuleInstanceLoad(IntPtr、IntPtr、IntPtr、IntPtr)
これに続いて:
障害が発生しているアプリケーション名: devenv.exe、バージョン: 12.0.30501.0、タイム スタンプ: 0x5361f453 障害が発生しているモジュール名: vsdebugeng.impl.DLL、バージョン: 12.0.30501.0、タイム スタンプ: 0x5361f482 例外コード: 0xc0000005 障害オフセット: 0x00094c1f 障害が発生しているプロセス ID: 0x1c9c 障害のあるアプリケーションの開始時間: 0x01cfe7cc0cf50465 障害のあるアプリケーションのパス: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe 障害のあるモジュールのパス: C:\Program Files (x86)\Microsoft Visual Studio 12.0\ Common7\Packages\Debugger\vsdebugeng.impl.DLL レポート ID: 097b17c6-5438-11e4-8409-001f2904053c
c# - 特定の例外で .NET アプリケーションを終了する方法 - おそらくスタックの巻き戻しなし?
C# および C++ コードで構成される .NET アプリケーション (サービス) があります。
C++ コードの「クラッシュ」(つまりSystem.AccessViolationException
、その他の破損状態の例外) は (「非」) 正しく処理され、(ログに記録される) 私のハンドラーに直接導かれAppDomain.CurrentDomain.UnhandledException
、アプリケーションが終了し、WER ダンプ ファイルが次の場合に書き込まれます。そのように構成されています(それはそうです)。
このアプリケーションでは、これSystem.NullReferenceException
は常にバグであると判断しました。特に、一部の C++/CLI アクセス違反のバグでは、AV ではなくこのバグが報告されるためです。
.NETが例外境界 (この場合は私のコールバック) で をキャッチしないようにする方法はありますか?代わりに、スタックを巻き戻さずにアプリを直接終了し、基本的に に直接「ジャンプ」しますか?NullReferenceException
OnTimer
AppDomain.CurrentDomain.UnhandledException
vb.net - FTP: ダウンロードした zip ファイルが破損する (VB.net)
週に 1 回、大きな zip ファイルを自動的にダウンロードしようとしています。これまでのところ、新しいファイルがアップロードされているかどうかを確認でき、ダウンロードを開始する準備ができていますが、いくつかの問題が発生しています。ダウンロードするファイルは 2.2 GB (Zip) を超えるため、かなり大きなファイルであり、コードの新しいピースをテストするたびに、ファイルが再度ダウンロードされるまで 5 ~ 10 分待つ必要があります。一番下にもっと複雑なコードがあり、最初に簡単なコードがあります。最後の数バイトが転送されると、どちらも同じエラーになります。
はい、これは ftp ホストへの実際のログイン情報です。したがって、考えられる解決策を投稿する前にコードをテストしたい場合は、お気軽に。ファイルのダウンロードがちょうど完了しようとすると、次の例外が発生します。
オンラインで見つけたこの少し複雑なバージョンも試しました。
これらのソリューションはどちらも問題なく機能しているように見えます。テスト フォルダーのファイル サイズの増加を、数秒間フリーズしてから同じ例外を返す最後の最後まで追跡できます。
この問題の説明をお願いします。
c# - 破損状態の例外を適切に処理する
この質問に関連して、.NET 4.5.2 アプリが破損状態の例外をキャッチできるように CLR を強制したいと思います。これは、それらをログに記録してからアプリケーションを終了するという唯一の目的のためです。catch (Exception ex)
アプリの周りにいくつかの場所がある場合、これを行う正しい方法は何ですか?
したがって、<legacyCorruptedStateExceptionsPolicy>
属性を指定した後、正しく理解していれば、すべてのcatch (Exception ex)
ハンドラーが例外をキャッチAccessViolationException
し、喜んで続行します。
ええ、それcatch (Exception ex)
が悪い考えであることは承知していますが、CLR が少なくとも正しいスタック トレースをイベント ログに記録してくれるなら、喜んで顧客に説明したいと思います。彼のサーバー アプリは午前 1 時に急速に失敗し、しばらくの間オフラインになっています。夜は良いことです。しかし残念なことに、CLR は無関係な例外をイベント ログに記録してからプロセスを終了するため、実際に何が起こったのかを知ることができません。
問題は、これを実現する方法、プロセス全体です。
(アップデート)
言い換えれば、これはおそらく単純なアプリのほとんどの例外で機能します。
ただし、次の場合は機能しません。
- 未処理のアプリ ドメイン例外 (つまり、非フォアグラウンド スレッドでスローされる)
Main
Windows サービス アプリ (実際のエントリ ポイントを持たない)
この作業を行う唯一の方法のように思え<legacyCorruptedStateExceptionsPolicy>
ますが、その場合、CSE をログに記録した後に失敗する方法がわかりませんか?
go - go を使用してコマンドを実行しようとすると、go-build が破損していて読み取れないという出力が表示されます。
(以外のgo help
) go コマンドを実行するたびに、出力は次のようになります。
なぜこれが起こっているのかわかりません。再起動を試みましたが、一時的に修正されましたが、いくつかのコマンドを実行した後、これが再び発生し始めます。これが役立つかどうかはわかりませんが、私のユーザー名LUCAS_~1
はLucas_000
. また、Temp
フォルダを確認しましたが、「go-build268335003」という名前のものはないようです。
どんな助けでも大歓迎です、ありがとう!