問題タブ [access-violation]
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.
asp.net - IIS 7、ASP.NET: AccessViolationException
IIS 7 の ASP.NET アプリケーションで次の例外が発生する理由は何ですか? アプリケーション全体を再起動する未処理の例外です。
例外: System.AccessViolationException
メッセージ:保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。
スタックトレース:
[更新]
システム: Windows Web Server 2008 64 ビット。
アプリケーションの詳細:ページ アーキテクチャを使用しない ASP.NET アプリケーション。カスタムの http 同期および非同期ハンドラーを使用してリクエストを処理します。ThreadPool からの並列スレッド、または Thread クラスによって作成された並列スレッドも実行されています。
c - 文字列を変更するこのコードが機能しないのはなぜですか?
cスタイルの文字列では、文字ポインタが指すメモリアドレスにcharをどのように割り当てますか?たとえば、次の例では、numを「123456」に変更したいので、pを「0」のある数字に設定して「4」で上書きしようとしました。ありがとう。
exception - C++ Builder でアクセス違反の例外を処理しますか?
私はやろうとしています:
これはアクセス違反の例外をキャッチし、エラー メッセージを表示して処理する必要があると思います。
でも、なぜか単純になってしまう
アクセス違反
完全なメッセージの代わりにメッセージ
モジュール YYY の Violation XXX にアクセスします。アドレス ZZZ に書き込みます。
ところで、ExceptObject()
ルーチンは奇妙な理由で NULL を返します。
ここで何が欠けていますか?
c++ - dll例外をキャッチした後のアクセス違反
モジュールは事前に知られていないため、実行時に動的に dll としてロードする必要があります。モジュールはクラス インターフェイスに準拠しているというだけです。私が気付いたのは、(メイン スレッドのメイン プログラムで) dll によってスローされた例外をキャッチした後、適切なデストラクタが呼び出され、モジュールが破棄され、dll がアンロードされた後、catch ブロックの最後の } として行ごとにステップ実行するときにVisual Studio C++デバッガーが到達すると、別の例外が発生し、プログラムがクラッシュします
xxxxx.exe の 0x68ad2377 (msvcr90d.dll) での初回例外: 0xC0000005: アクセス違反の読み取り場所 0x02958f14。
例外で中断を有効にすると、この 2 番目の例外で中断すると、場所が次のように表示されます。
msvcr90d.dll!__DestructExceptionObject(EHExceptionRecord * pExcept=0x0017ee4c, unsigned char fThrowNotAllowed=0) 行 1803 + 0xf バイト
フレームスタックが壊れている可能性があります。この例外がスローされる理由がわかりません。
私のコード構造の簡略化されたバージョンは次のとおりです。
プログラムの非常に単純化された構造:
delphi - Indy Sockets 9 IdTcpServer ServerExecute で AccessViolation が発生するのはなぜですか?
最初の質問:
次のルーチンは、Indy 9 IdTcpServer.OnExecute ルーチンの正しい実装ですか?
2番目の(実際にはもっと重要な)質問:
現在、アクセス違反 (アドレス 000000 からの読み取り) が時々発生しています。明らかに行で:
ただし、AContext / Connection / InputBuffer / IOHandler = nil BEFORE が false かどうかを確認します。呼び出しの後 (および例外が発生した後)、IOHandler は nil です。
RAD Studio / Delphi 2007 を使用しています。
c# - AccessViolationException を引き起こす埋め込みの firefox/xulrunner
ほとんどの場合、firefox/xulrunner を C# アプリケーションに正常に埋め込むことができましたが、問題がないわけではありません。まれに AccessViolationException がスローされます。これは、GC がメモリ内のマネージド オブジェクトを移動し、アンマネージド xpcom が移動後にそれを使用しようとしたことが原因であると考えられます。たとえば、firefox/xulrunner が呼び出すいくつかのインターフェイスを実装するカスタム プロトコル用のプロトコル ハンドラを作成しました。それを行った後、AccessViolationException がはるかに優勢になりました。考えられる解決策として GCHandle.Alloc(object, GCHandleType.Pinned) を調べましたが、カスタム マーシャラーを記述してインターフェイスを実装するクラスを "blittable" にする方法に関する十分な情報が見つかりませんでした。それで、この問題に対処する方法や、私のクラスを「ブリット可能な」クラスに変換する方法について、誰かアイデアがありますか? また、相互運用のどの部分が AccessViolationException を引き起こしているのかを追跡することはほぼ不可能です。うーん:-(
洞察をありがとう!
.net - System.AccessViolationException の理由を特定する
非決定的な System.AccessViolationException がネイティブ コードからスローされています。再現するのは難しいですが、時々起こります。アクセス違反に要する時間は約2時間で、アクセス違反が発生する保証はないため、「デバッグだけ」できるかどうかはわかりません。
ネイティブ ライブラリはマネージド ラッパーによって使用されます。Java から JNI を介して使用され、.NET から IKVM 化された JNI を介して使用されます。この問題は、IKVM のコードからのみ再現されましたが、データ セットが異なり、IKVM のアプリケーションで使用されるデータで Java アプリケーションをテストする方法がありません。
すべてのソースがありますが、(可能であれば) 多数の変更を加えることは避けたいと考えています。
このアクセス違反の理由については、ネイティブ コール スタックで十分な情報が得られると思います。
このアクセス違反の理由を特定する効果的な方法はありますか?
私にとって理想的な解決策は、コードまたはプロセス環境を変更することだと思います。このアクセス違反の場合、メモリ ダンプでクラッシュするため、その変更を加えて待つことができます。
memory - リリース モードでの AccessViolationException (C++)
Visual C++ からリリース モードでアプリケーションを実行すると、次の例外が発生します。
未処理の例外: System.AccessViolationException: 保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。_cexit() で .LanguageSupport._UninitializeDefaultDomain(Void * cookie) で .LanguageSupport.UninitializeDefaultDomain() で .LanguageSupport.DomainUnload(オブジェクト ソース、Eve ntArgs 引数) で .ModuleUninitializer.SingletonDomainUnload(オブジェクト ソース、EventArgs 引数) で
これは、デバッグ モードでは発生しません。最初は、自宅のコンピューターでこの例外が発生しましたが、職場のコンピューターでは発生しませんでした。仕事用のコンピューターで開発を続けていたときに、ぶつかってしまいました。
また、3 つの const std::string 変数を追加すると、例外がスローされることがわかりました。私が削除した場合、すべてがうまくいきました。
別の情報: リリース モードでコンパイラの最適化をすべてオフにすると、例外がなくなることがわかりました。
何か怪しいことが起こっている。これを追跡する方法についてのアイデアはありますか?
助けてくれてありがとう、ジョー
c++ - 文字列が長すぎる場合の AccessViolationException (C++)
数日前に同様の質問をしましたが、より多くの洞察を求めています。プログラムに文字列を追加すると、AccessViolationException が発生します。
プログラムには、最上位レベルに一連の const std::string があります。
最後の文字列を次のように置き換えると:
その後、例外はなくなります。これは、プログラムの他の場所で発生した不良メモリに (文字列から) 余分なメモリがヒットしただけですか? または、例外は文字列に関連していますか?
助けてくれてありがとう、
ジョー