2008-08-20 11 views
2

私はコードを公開していません(独自の問題)が、どのような種類のものがC#で次のエラーを引き起こすのか知っていますか?これは、コールが他のクライアントによって終了されたときに私が書いた(counterpath apiを使用して)VOIPクライアントによってスローされています。エラーは次のとおりです。C#メモリの壊れたエラー

System.AccessViolationException was unhandled 
    Message="Attempted to read or write protected memory. This is often an indication that other memory is corrupt." 
    Source="System.Windows.Forms" 
    StackTrace: 
     at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
     at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.Run(Form mainForm) 
     at CollabAnalysisSF.Edge.GUI.Forms.Program.Main() in d:\data\beyerss\Desktop\client\GUI\ARGui\Program.cs:line 18 
     at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException:

UPDATE:私たちは、私たちが知らなかったイベントをオフに送信して使っていたライブラリのいずれかが判明し、問題がどこかにありました。今修正されました。

答えて

3

一覧:それが配置された後

  • オブジェクトが使用されています。これは、管理対象オブジェクトをファイナライザに配置している場合に発生する可能性があります(これを行うべきではありません)。
  • 使用しているオブジェクトの1つが未実装であるため、プロセスメモリヒープが壊れています。 DirectX、GDIなどで多くのことが起こります。
  • マネージド管理されていない境界上のマッシングは欠陥があります。管理されていない部分のコードで使用する前に、マネージドポインターを固定するようにしてください。
  • 安全でないブロックを使用していて、面白いことをしています。それはWindowsフォームに問題がある可能性があります場合は

。しかし問題は起こっているのではなく、正しく報告されていないということです。あなたはおそらくまだ間違ったことをしています。

HWNDを使用してエラーの原因となっているコントロールを特定できますか。それはいつも同じですか?このコントロールは、アプリケーションがクラッシュする直前に面白いことをしていますか?コントロールのunmannaged部分は、カスタムウィンドウまたは標準コントロールですか?

1

この種の問題は、アンマネージドコードを呼び出す場合に発生する可能性があります。 dll。マーシャルがひどく間違っているときに起こることがあります。

アンマネージコードを呼び出しているかどうかを教えてください。もしそうなら、あなたはデフォルトのマーシャルまたはより特定のものを使用していますか?スタックトレースの外観からは安全でないコードを使用していますか?ポインタなど?これはあなたの問題かもしれません。いくつかの可能性の

0

ここに、より詳細なスタックトレースがあります。それはTargetSiteが{IntPtr DispatchMessageW(MSG ByRef)}
としてリストされ、モジュールの下で、それはのSystem.Windows.Forms.dll

を持ってSystem.Windows.Form.dll

とは何かを持っているように私には見えます

関連する問題