問題タブ [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.
c++ - Delphi から C++ DLL を使用する場合の AccessViolation
Delphi (Turbo Delphi 2006) プログラムから C++ で記述された DLL を使用しようとすると、奇妙な問題が発生します。
コマンド ラインから Delphi プログラム(以下を参照)を実行すると、すべて正常に動作します。また、デバッグ(CTRL + SHIFT + F9)なしでDelphi環境から実行すると、すべて問題ありません。ただし、デバッグ (F9) で実行すると、次のエラーが発生します。
プロジェクト Z:\test.exe が次のメッセージで失敗しました:「0x00403fdf でのアクセス違反: アドレス 0x00a14e74 の読み取り」。プロセスが停止しました。Step または Run を使用して続行します。
奇妙なことに、最後の 'end' を実行するとエラーが発生します。コードの。Delphi の CPU ディスプレイは、これが「UnsetExceptionHandler」のどこか、「FinalizeUnits」の 4 行前、より具体的には次の場所にあることを示しています。
00403FDF 3901 cmp [ecx],eax
私はここで途方に暮れています。Delphi は私のドメインではありません (私は DLL を作成していたので、それを使用したサンプル プログラムを提供する必要があります)。したがって、この問題に関するヘルプは大歓迎です:)
Delphi コードは次のとおりです。
dll.h
dll.cpp
c# - C# の StgCreateStorageEx は AccessViolationException を与える
私はほぼ 1 週間、C# で StgCreateStorageEx を呼び出す方法を理解しようとしてきました。
関数をどのように宣言すればよいかさえわかりません。無数のウェブサイトが無数の異なる方法でそれを宣言しているのを見てきました。しかし、これは私が現在持っているものです:
最後のパラメーターで MarshalAs を使用する必要があると言うサイトを見たことがあります。また、IUnknown、Interface、LPStruct、およびその他のいくつかを使用してみました。唯一気になったのは、マーシャラーがデータ型に不満を持っていたことです。関係ありそうな気もするけど、いらないことしか言わないから、なにがしたいのかわからない。
関数の呼び出し方法について: これは最初はずっと簡単でした。しかし、メモリ違反が発生した後、私は読み始め、最終的にGCが私を台無しにしていないことを確認する唯一の方法は自分でメモリを管理することであるという結論に達しました。
この混乱を正し、実際に機能させる方法について誰かアイデアを持っていますか?
ところで、ここでの最終的な目標は、フォルダーを TreeView から Windows エクスプローラーにドラッグして、そのフォルダーとそのすべての内容を、ドロップした場所に書き込むことができるようにすることです。問題は、TreeView が完全にデータベースに格納されたファイル システムを表すことです。これを行う唯一の方法は、IStorage を渡すことだったので、StgCreateStorageEx を呼び出す必要がありました。
sleep - Threading.Thread.Sleep 実行中の AccessViolationException
Vb.Net でスレッドを集中的に使用するアプリケーション (+-50 スレッド) を開発しました。Thread.Sleep() の実行中にランダムスレッドで AccessViolationException が発生することがあります。
私たちが知る限り、すべてのコードは管理されているため、安全でないコードを実行することはありません。DevExpress コントロールを使用していますが、アンマネージ コードがあるかどうかはわかりません。
この時点で、このエラーをデバッグして修正するために何をすべきかわかりません。どんなヒントも役に立ちます。
前もって感謝します。
c - インラインアセンブラでCを使う初心者問題
アセンブラーがCでどのように機能するかをテストして学習しようとしているので、いくつかのチュートリアルを閲覧していて、これを見つけました:
}
私が抱えている問題は、実行できないことです.Microsoft Visual Studio 2008のメインメソッド内でコンパイルできますが、実行すると次のエラーが発生します:
Test.exe の 0x00da3660 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0xffffffff。
2 行目 mov es,ax //lägg startadressen i es
プログラムが 16 ビットであり、VS 2008 がそれを 32 ビット プログラムにコンパイルする可能性はありますか? もしそうなら、VS 2008 に別の方法でコンパイルさせることはできますか?
アセンブラ内の優れたチュートリアルを知っている人はいますか?
python - 「WindowsError: 例外: アクセス違反...」 - ctypes の質問
以下は、DLL に常駐する C 関数のプロトタイプです。
別のスレッドで、この関数に必要な引数を適切に作成して送信する方法について質問しました。
スレッドは次のとおり です。この C 関数を複数の引数で ctypes でラップするにはどうすればよいですか?
したがって、上記のスレッドの適切な情報を使用しましたが、次のエラーが発生します: WindowsError: 例外: アクセス違反書き込み 0x00001001
どのように進めたらよいか迷っています。Windows XP を使用しています。管理者アカウントでログインすると、問題は解決しますか? それとも、これは Python のメモリ オブジェクトが不変であることに問題がありますか?
皆さんありがとう!
関連する Python で編集:
関連するコードを追加するために編集しました!デバイスの各機能を最初に動作させるための簡単なスクリプトを書いているだけです。変数 sizeTRACE は再利用できますが、現在はテスト コードであり、デバイスが接続されていないため、GetSize() はゼロを返しています。ゼロを掛けるとバズが消えてしまうので、今のところ強制的に 1 にしています。これが明確でない場合は、お詫びし、この投稿を編集しようとします。
2番目の編集:デバイスを接続して、それが役立つかどうかを確認することが提案されました. FROG を接続したばかりですが、まだ同じエラーが発生します。非常に奇妙で、私はかなり無知です。いずれにせよ、ありがとうございました!
c# - C++ コールバックから C# 関数へのアクセス違反例外/クラッシュ
そのため、C# で最終的に使用するために C++/CLI でラッパーを構築するために使用したネイティブ サード パーティの C++ コード ベース (.lib および .hpp ファイル) を使用しています。
デバッグ モードからリリース モードに切り替えるときに、コールバックのコードが返されたときにアクセス違反例外が発生するという特定の問題に遭遇しました。
コールバック関数形式の元の hpp ファイルのコード:
コールバック関数形式の C++/CLI ラッパーからのコード: (すぐに 2 つ宣言した理由を説明します)
-- 簡単に言うと、2 つ目の「UnManagedCallbackFunction」を宣言した理由は、ラッパーで「中間」コールバックを作成しようとしたため、チェーンがネイティブ C++ > C# からネイティブ C++ > C++/CLI ラッパー > C# のバージョンに変更されたためです。 ...完全な開示、問題はまだ生きています。同じ行 (リターン) で C++/CLI ラッパーにプッシュされたばかりです。
そして最後に、C# からのクラッシュ コード:
コンソールへのすべての書き込みが完了すると、戻ってきたときに恐ろしいクラッシュが発生します。
helloworld.exe の 0x04d1004c で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x04d1004c.
ここからデバッガーにステップインすると、コール スタックの最後のエントリが次のようになるだけです: > "04d1004c()" これは 10 進数値として評価されます:
これは、次のようなコンソールを見る場合にのみ興味深いものです。
さて、マイクロソフトの世界では、デバッグとリリースの間でいくつかのことがまったく異なることを知っています。もちろん、バイトのパディングと変数の初期化について心配しているので、ここで提供していないものがある場合はお知らせください。(すでに長い) 投稿に追加します。また、マネージド コードがすべての所有権を解放していない可能性があり、ネイティブ C++ のもの (コードを持っていない) が pData オブジェクトを削除または強制終了しようとして、アプリがクラッシュする可能性があると思います。
より完全な開示、それはすべてデバッグモードで(一見)正常に動作します!
どんな助けにも感謝する本当のヘッドスクラッチの問題!
c# - VS2008 MySQL コネクタ/NET AccessViolationException
私は、VS2008 または MySQL Connector/NET のいずれかによってスローされる絶え間ないエラーに何週間も悩まされてきました。
これらのエラーは、 Visual Studio のデータセット デザイナーを操作しているときにランダムに表示され、開始するとすぐに停止しません。XSDファイルを保存することさえできなくなります。ポップアップに次のように表示されます。
保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。
AccessViolationException
(どうやらであることが判明)
そうは言っても、私は.NET 3.5を実行しているため(そして修正をインストールできないため)、悪名高いリモーティングバグには適用できないようです。私はネットでかなりの量の調査を行ってきましたが、ほとんどの場合、この問題に行き着きます。
さらに、場合によっては、次の解決策のいずれかで問題が一時的に解決されます (前の解決策が失敗した場合に適用されます)。
- VS2008 を再起動します。
- VS ソリューションのクリーニング。
- SVN 作業コピーのクリーニング;
- SVN を再チェックアウトします。
- MySQL Connector/NET の再インストール (5.2.6 および 6.0.4 を試行);
- VS2008 の再インストール。
(これが適切であることが判明した場合は、AnhkSVN 2.1 も使用しています。)
似たようなことを経験したことがありますか?修正または回避策はありますか?
vb.net - RAM の障害が原因で System.AccessViolationException が発生することはありますか?
私は約1年間取り組んできたWebサイトを持っています。最近、私の開発マシンで System.AccessViolationException が時々スローされ始めました。ほとんどの場合、マシンから離れていたときに...
Javascript 部分で 100% 作業して以来、サーバー コードは何週間も変更していませんが、最近このエラーが発生し始めました。
また、私が行っているコードは 100% 管理されています。私は相互運用を行っておらず、奇妙な DLL を呼び出していますが、何もしていません。これは純粋な VB.Net であるため、これらのいずれかを自分で生成する方法がわかりません...
さて、私はこの新しいマシンを数か月使用していますが、100% 正しく動作していません。たとえば、2、3日ごとにブルースクリーンが表示されます。適切に診断する時間はありませんでしたが、RAM チップに問題があるのではないかと疑っています。
障害のある RAM が AccessViolationException につながる可能性はありますか?
それとも、調査すべき実際の問題がありますか? (私のRAM以外に)
アップデート:
エラーが発生した場所を実際に見つけることができません。
「未処理の例外、デバッグしますか?」というメッセージが表示されます。ダイアログを開き、デバッガーをアタッチすると、すべての ASP.Net スレッドが含まれるスレッド リストが表示され、自分で作成した 3 つのスレッドが表示されます。
これらの 3 つについては、 Call Stack があり、それらはすべて Sleep() 呼び出しで停止します (これは予想されることです)。
VSが問題として指摘しているスレッドを含む他のすべてのスレッドについては、コールスタックがありません。また、例外に関する詳細もまったくありません。
だから、毎回同じ場所で起こるかどうかはわかりません。
memtestについては、はい、そのようなことをするつもりです。すぐにそれを行う時間が欲しいと思っていますが、それまでの間、これでこの問題を説明できるかどうかを知りたいと思っていました.
更新 2:
イベントログでこれを見つけました...
未処理の例外が発生し、プロセスが終了しました。
これをどうするかについてのアイデアはありますか?
ありがとう
ダニエル
c++ - 非常に散発的なクラッシュをデバッグして解決するためのアイデア - AV のようです
エラーメッセージなどを表示せずにアプリが消えてしまうバグがどこかにあります。アプリが画面から消え、タスク マネージャーに表示されなくなります。
このアプリは C++Builder アプリ (CBuilder2007) であり、このエラーをキャッチするために考えられるすべてのことを試しました。非常にめったに発生しません。私のマシンでは一度もクラッシュしたことがなく、オフィスにあるテスト マシンでは 1 回だけです。私たちの顧客の1人では、それがもう少し頻繁に発生しますが、それを実現する方法や、それが発生する状況を見つける方法が見つかりません. 重いマルチスレッドアプリです。
このアプリで madExcept を有効にしましたが、何もキャッチしません。set_terminate
およびset_unexpected
RTL ルーチンを使用してハンドラーを追加しましたが、うまくいきませんでした。
私が持っている唯一の情報は、メインアプリからリターンコードを取得するために行った「ローダーアプリ」ラッパーからのものです。コードで終了しC0000005
ます。これは、アクセス違反が発生したことを意味すると思います。奇妙なことに、前述のように、Windows エラー ボックスなどもありません。
質問は次のとおりです。これをキャッチしようとするアイデアはありますか? これがどこで起こっているのか手がかりさえ持っていないので (私はアプリの周りにたくさんのログを記録していますが、アプリがクラッシュする前の「トレイル」はどこにもつながっていません)set_terminate
とset_unexpected
ルーチンに関する私の考えは取得することでしたエラーが生成された場所を確認するためのスタック トレースですが、これまでのところ、これらのルーチンはまったく呼び出されていません (少なくとも、私のオフィスでこれが発生したのは 1 回だけです)。
前もって感謝します
[2009 年 9 月 22 日更新] AddVectoredHandlerException を使用して、クラッシュからコールスタックを取得できたので、バグの特定と修正を開始できます。ありがとう!!!
c++ - C++ 動的配列アクセス違反
**** 元の投稿の numCars に関する混乱について申し訳ありません。元の********と一致するようにコードを変更しました
次のアカデミック プログラムは、元の問題を簡略化したものですが、私がまだ解決していない問題に焦点を当てています。この問題には 2 つのクラスと main メソッドがあり、2 つのクラスは Dealer クラスと Car クラスで構成されます。Dealer クラスには、Dealer のコンストラクターで動的配列に初期化されるプライベート Car* ポインターがあります。ディーラーの addCar メソッドが呼び出されると、メイン メソッドでエラーが発生します。main メソッドでは、意図的に Dealer 変数を addCar(Dealer& d) メソッドに渡して、元のアプリケーションの構造を模倣しています。次に addCar メソッドは、cars[numCars++]=car; を実行するとアクセス違反が発生するディーラーの addCar(const Car& car) メソッドを呼び出します。cars[numCars++]=car がアクセス違反になる理由を説明できますか
:numCars(0) {cars = new Car[maxCars];}
setNumCars(int count){numCars = count;}