問題タブ [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.
memory - プログラムによって割り当てられたメモリの外部へのアクセス。(他のアプリのメモリへのアクセス)
アクセス違反の例外を取得せずに、プログラムに割り当てられたメモリの外側にあるメモリ チャンクにアクセス (読み取りまたは解放) する方法はありますか。これとは別に、私が実際に理解したいのは、メモリ クリーナー (システム ガベージ コレクター) のしくみです。そんなプログラムを書きたいとずっと思っていました。(言葉は問いません)
前もって感謝します :)
c++ - 動的 2D 配列の書き込み時にアクセス違反が発生する... 時々
このプログラムは動的配列を生成することを目的としていますが、特定の次元を指定して書き込むと、アクセス違反エラーが発生します。例: R = 6、C = 5 はクラッシュしますが、R = 5、C = 6 はクラッシュしません。ご参考までに、この壊れたプログラムを「修正」するのは私の宿題ではありません。これはクラスで教えられた方法です。また、私の評価の一部は、この方法を使用することであるため、ベクトルはアウトです。前もって感謝します!
c - C toLowerCase 関数が動作しない - アクセス違反
文字の配列を引数として取り、すべての文字を小文字に変換する単純な関数があります。ただし、奇妙なアクセス違反エラーが発生します。コードは次のとおりです。
私の間違いは何ですか?ありがとう
access-violation - /clr ビルド DLL を使用するネイティブ C++ アプリケーションを実行するとアクセス違反が発生する
メイン アプリケーション セグメントがアンマネージド MFC であり、マネージド (C# DLL) とアンマネージド コード間の通信を橋渡しする /clr フラグでコンパイルされた C++ DLL を呼び出すように、レガシ混合 (マネージド DLL とアンマネージド DLL) アプリケーションを再編成しています。 . 残念ながら、私の変更により、アプリケーションの InitInstance() が呼び出される前にアクセス違反が発生しました。これにより、デバッグが非常に困難になります。私が得る唯一の情報は、次のスタック トレースです。
だから、ここに私が試したいくつかのシナリオがあります。
- Exceptions->Win32 Exceptions->c0000005 Access Violation をオンにして、Thrown 時にブレークします。私が得る最も詳細は、上記のスタックトレースからのものです。F10 でアプリケーションを試してみましたが、ブレークポイントに到達する前に失敗し、上記のスタック トレースで失敗します。
- ブリッジ DLL をスタブ化して、bool を返すメソッドが 1 つだけになるようにし、そのメソッドが false を返すようにコーディングしました (C# コードは呼び出されません)。
スタブ化された DLL が /clr フラグを使用してコンパイルされている場合、アプリケーションは失敗します。/clr フラグを指定せずにコンパイルすると、アプリケーションが実行されます。
- マルチドキュメント アプリケーション用の Visual Studio ウィザードを使用してスタブ MFC アプリケーションを作成し、DllPassthrough::IsFailed() を呼び出しました。これは、DLL のコンパイルに /clr フラグを使用しても成功します。 - 次のメモAccess violation when using c++/cli
で概説されているように、winmm.lib で手動 LoadLibrary を実行しようとしました。アプリケーションはまだ失敗します。
それで、私の質問は問題を解決する方法ですか?ヒント、戦略、または以前の事件。それに失敗した場合、アクセス例外の原因となっているコード セグメントまたはライブラリに関する詳細情報を取得するにはどうすればよいでしょうか? LoadLibrary 呼び出しを行うなど、より複雑な回避策を試す場合は、失敗したライブラリに絞り込みたいと思います。
ありがとう。ところで、私たちは Visual Studio 2008 を使用しており、プロジェクトはマネージ セクションの .NET 2.0 フレームワークに対してビルドされています。
c++ - CoUninitializeが終了時にエラーを引き起こすのはなぜですか?
私はExcelファイルからいくつかのデータを読み取るためにC++アプリケーションに取り組んでいます。私はそれを機能させましたが、私は一部について混乱しています。これがコードです(最初のセルのみを読み取るように簡略化されています)。
プログラムを機能させるには、CoUninitializeの呼び出しをコメントアウトする必要がありました。CoUninitializeのコメントが解除されると、プログラム終了時にcomip.hの_Release関数でアクセス違反が発生します。
これがcomip.hのコードです。
私はCOMプログラミングの経験があまりないので、おそらく私が見逃している明らかな何かがあります。
CoUninitializeを呼び出すと例外が発生するのはなぜですか?
CoUninitializeを呼び出さなかった場合の結果は何ですか?
私はここで完全に間違ったことをしていますか?
c# - 非決定論的アクセス違反のクラッシュをデバッグする方法は?
C#/COM/C++ アプリケーションがクラッシュしており、デバッグの助けが必要です。gflags を有効にして WinDbg をアタッチして実行したところ、クラッシュの原因はアクセス違反であると判断されましたが、それ以上に絞り込むことはできませんでした。すべてのマシンで問題が発生しているわけではありません。問題を頻繁に再現しているように見えるマシンがいくつかありますが、決定論的ではありません。私たちは、単純にアプリケーションから切り替えて (Alt-Tab など)、元に戻しただけでアプリケーションがクラッシュすることを確認しました。WinDbg からの出力は以下のとおりです。
問題を引き起こしている可能性のあるコードの領域を体系的にコメントアウトしようとしてきましたが、まだあまり成功していません。
どのデバッグ手順またはツールを試す必要があるかについて何か提案はありますか?
!分析 -v
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 1a584ff2 (+0x1a584ff1)
ExceptionCode: c0000005 (アクセス違反) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 1a584ff2 アドレス 1a584ff4 からの読み取りを試行PROCESS_NAME: ProcessFiles.exe
ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx の命令が 0x%08lx のメモリを参照しました。メモリを %s にすることはできません。
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx の命令が 0x%08lx のメモリを参照しました。メモリを %s にすることはできません。
EXCEPTION_PARAMETER1: 00000000
EXCEPTION_PARAMETER2: 1a584ff2
READ_ADDRESS: 1a584ff2
FOLLOWUP_IP: Ed20+1a584ff1 1a584ff2 ?? ???
NTGLOBALFLAG: 2000000
APPLICATION_VERIFIER_FLAGS: 0
IP_MODULE_UNLOADED: Ed20+1a584ff1 1a584ff2 ?? ???
MANAGED_STACK: (TransitionMU) 0EC6F6F4 7B1D8CCE System_Windows_Forms_ni!System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32, Int32, Int32)+0x24e 0EC6F790 7B1D8937 System_Windows_Forms_ni.Application.Windows. +ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext)+0x177 0EC6F7E4 7B1D8781 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext)+0x61 0EC6F814 7B195911 System_Windows_Forms_ni!System .Windows.Forms.Application.Run(System.Windows.Forms.Form)+0x31 0EC6F828 0969D97A Extract_Utilities_Forms!Extract.Utilities.Forms.VerificationForm`1[[System.__Canon, mscorlib]].A(System.Object)+0x23a 0EC6F8C0 79A00EEE mscorlib_ni!システム。 Threading.ThreadHelper.ThreadStart(System.Object)+0x4a (TransitionUM)
LAST_CONTROL_TRANSFER: 7e418734 から 1a584ff2 へ
FAULTING_THREAD: ffffffff
ADDITIONAL_DEBUG_TEXT: スレッド:[e30] のフレーム:[0] からの属性 [ip_not_executable] に基づくフォローアップ セット
BUGCHECK_STR: APPLICATION_FAULT_BAD_INSTRUCTION_PTR_INVALID_POINTER_READ_WRONG_SYMBOLS_WINDOW_HOOK
PRIMARY_PROBLEM_CLASS: BAD_INSTRUCTION_PTR
DEFAULT_BUCKET_ID: BAD_INSTRUCTION_PTR
STACK_TEXT: 7b1d8cce System_Windows_Forms_ni!System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop+0xc 7b1d8937 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner+0x0 7b1d8781 System_Windows_Forms_ni!System.Windows .Forms.Application+ThreadContext.RunMessageLoop+0x0 7b195911 System_Windows_Forms_ni!System.Windows.Forms.Application.Run+0x31 0969d97a Extract_Utilities_Forms!Extract.Utilities.Forms.VerificationForm`1[[System.__Canon, mscorlib]].A+0x23a 79a00eee mscorlib_ni!System.Threading.ThreadHelper.ThreadStart_Context+0x72a25e 792e019f mscorlib_ni!System.Threading.ExecutionContext.Run+0x6f 797db48a mscorlib_ni!System.Threading.ThreadHelper.ThreadStart+0x4a
STACK_COMMAND: .ecxr ; ~~[e30]; .frame 0; ** 疑似コンテキスト ** ; キロバイト
FAILED_INSTRUCTION_ADDRESS: Ed20+1a584ff1 1a584ff2 ??
???SYMBOL_NAME: Ed20
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: Ed20
IMAGE_NAME: Ed20
DEBUG_FLR_IMAGE_TIMESTAMP: 0
FAILURE_BUCKET_ID: BAD_INSTRUCTION_PTR_c0000005_Ed20!アンロード
BUCKET_ID: APPLICATION_FAULT_BAD_INSTRUCTION_PTR_INVALID_POINTER_READ_WRONG_SYMBOLS_WINDOW_HOOK_BAD_IP_Ed20
フォローアップ: MachineOwner
.net - ADODB フィールドの値にアクセスすると System.AccessViolationException が発生する原因は何ですか?
.Net Web サービス (両方とも Windows XP マシン上) から PostgreSQL データベースに接続しています。最近、数回、いくつかの異なるコンピューターでSystem.AccessViolationException
エラーが発生しました。
取得できた 1 つのスタック トレースは、ADODB.recordset を取得してフィールドの値を取得したときに発生していたことを示していました。例えば
これは常に失敗するわけではありません。めったに失敗しません。いずれかのコンピューターで memtest を実行しましたが、問題は見つかりませんでした。
問題は何でしょうか?ドライバーの場合、どのような選択肢がありますか?
visual-studio - Visual Studio外のAccessViolationException?
アンマネージ C++ ライブラリを使用する小さな C# winforms アプリケーションを開発しています。このライブラリのコードにはアクセスできません。
私が Visual Studio を使用していて、アプリケーションを実行している場合は、すべてが機能しているライブラリへの呼び出しを行います。CTRL + F5 を実行すると、AccessViolationException が発生します。私はいくつかのテストを行い、.NET 2.0 で別の winforms アプリケーションを作成しました (他のものは .NET 4.0 でした)、そこで AccessViolationException を受け取りません。そこで、.net 4.0 ソリューションで .net 2.0 クラス ライブラリを作成し、そのクラス ライブラリを使用すると考えました。これは役に立ちませんでしたが、それでも AccessViolationException が発生しました。
安全でないコードを許可し、コードのオンとオフを最適化する設定を試みましたが、それは役に立ちませんでした。デバッグ モードを終了すると、AccessViolationException が発生するのはなぜですか?
ありがとう
c++ - ポインタオブジェクトのメンバのアクセス違反
だから私はこのクライアント/サーバープログラムをコーディングしています。このコードはクライアント側のものです。クライアントにはオブジェクトのインスタンスがあります
ポインターとして作成する理由は、mpqs_sieve には 3 つの引数を取るコンストラクターしかなく、後でインスタンス化する必要があるためです。
クライアントはまずサーバーからデータを取得し、これを使用して instance_ をインスタンス化します。この後、さらにデータを要求し、これを受け取ると (これらは 2 次多項式の 3 つの係数です)、instance_ オブジェクトにこれらを設定する必要があります。ただし、instance_ のメンバー関数を呼び出すと、その関数呼び出し内の instance_ のメンバーの 1 つでアクセス違反が発生します。
ここにコードを投稿しました: on pastebinで、100 行目にエラーが表示されます。呼び出しは 71 行目から、その 21 行目より前に発生します。抜粋は次のとおりです。
これを解決するためのアイデアはありますか?
delphi - ローカル変数を割り当てるDelphiアクセス違反
これは世界で最も単純なことのように思えます、そして私はそれの上に私の髪を引っ張る準備ができています。
私はこのようなユニットを持っています;
これは変数の単純な割り当てであり、なぜこれを行っているのかわかりません。ユニットに対して、プロシージャに対して、グローバルに変数を宣言しようとしました-どこで実行しようとしても、アクセスをスローせずに、このプロシージャ内のどこでも宣言された整数にゼロの値を割り当てることはできません違反。私は完全に困惑しています。
同じユニット内からボタンOnClickハンドラー内からプロシージャを呼び出していますが、どこから呼び出しても例外がスローされます。クレイジーなことは、プログラム全体のユニット内の他の12の場所で、まったく同じことを問題なく実行できることです。なぜここに?私は完全に途方に暮れています。