Frage

Ich kann nicht nach dem code (eigene Fragen), aber weiß jemand, welche Art von Dingen verursachen würde, wird der folgende Fehler in C#.Es wird ausgelöst, indem ein VOIP-client, den ich geschrieben habe (mit counterpath api), wenn der Anruf beendet ist, durch den anderen client.Der Fehler ist:

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:
Stellt sich heraus, einer der Bibliotheken, die wir verwenden wurden, war der Absendung einer Veranstaltung, die wir nicht kennen, und das problem war irgendwo da drin.Dies wurde jetzt behoben.

War es hilfreich?

Lösung

Liste der einige Möglichkeiten:

  • Ein Objekt verwendet wird, nachdem es entsorgt wurde.Dies kann eine Menge passieren, wenn Sie sich die Entsorgung verwaltete Objekt in einem finalizer (sollten Sie nicht tun, dass).
  • Ein unmannaged Umsetzung eines von dem Objekt, das Sie verwenden, ist fehlerhaft und beschädigt den Prozess-Speicher-heap.Passiert eine Menge, die mit DirectX, GDI und andere.
  • Mashaling auf verwaltete, nicht verwaltete Grenze ist fehlerhaft.Stellen Sie sicher, dass Sie die pin ein verwalteter Zeiger vor der Verwendung auf einem nicht verwalteten code.
  • Sie sind mit unsicher-block und mache lustige Sachen mit ihm.

In Fall es könnte ein problem mit Windows Forms.Aber das problem ist nicht, dass es passiert, sondern vielmehr, dass es nicht richtig;Sie werden eventuell noch etwas falsch gemacht haben.

Sind Sie in der Lage zu bestimmen, welche Kontrolle verursacht die Fehler, die über die HWND-Eigenschaft?Ist es immer das gleiche?Diese Kontrolle etwas zu tun komisch nur, bevor die Anwendung stürzt ab?Ist die unmannaged Teil des Steuerelements, einem benutzerdefinierten Fenster oder einem standard-Steuerung?

Andere Tipps

Diese Art von prolem kann auftreten, wenn Sie den Aufruf von nicht verwaltetem code z.B.eine dll.Es kann auftreten, wenn Marshalling schrecklich schief geht.

Können Sie uns sagen, wenn Sie sind Aufruf von unmanaged code?Wenn Sie also mit Standard-Marshalling oder mehrere bestimmte Sachen?Aus der sieht der stack-trace sind Sie mit unsicherem code z.B.Zeiger und wie?Dies könnte Ihr problem sein.

Hier ist eine detaillierte stacktrace.Es sieht für mich so aus, es hat etwas zu tun mit der System.Windows.Form.dll

die TargetSite aufgeführt wird {IntPtr DispatchMessageW(MSG ByRef)}
und unter Modul hat System.windows.forms.dll

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top