Pregunta

No puedo publicar el código (propios problemas), pero ¿alguien sabe qué tipo de cosas podría producir el siguiente error en C#.Está siendo lanzado por un cliente VOIP que escribí (el uso de counterpath api) cuando la llamada es terminada por el otro cliente.El error es:

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: 

ACTUALIZACIÓN:
Resulta que uno de las librerías que se uso fue el envío de un evento que no conocen, y que el problema estaba en alguna parte.Fijo ahora.

¿Fue útil?

Solución

Lista de algunas de las posibilidades:

  • Un objeto se utiliza después de que se ha eliminado.Esto puede suceder mucho si son la eliminación de objetos administrados en un finalizador (usted no debe hacer eso).
  • Un unmannaged la aplicación de uno de los objetos que utiliza es intervenida y corrompido el proceso montón de memoria.Sucede mucho con DirectX, GDI y otros.
  • Mashaling administra-no administrado límite es errónea.Asegúrese de que el pin de un puntero administrado antes de utilizarlo en una parte del código no administrado.
  • Usted está utilizando inseguro bloque y hacer cosas divertidas con ella.

En tu caso podría ser un problema con Windows Forms.Pero el problema no es lo que está sucediendo, sino que no se informó correctamente;usted posiblemente ha hecho algo mal.

Son capaces de determinar lo que el control está causando el error mediante el HWND?Es siempre el mismo?Es este control haciendo algo gracioso que justo antes de la aplicación se bloquea?Es el unmannaged parte del control de una ventana personalizada o un estándar de control?

Otros consejos

Este tipo de prolem puede ocurrir si se llama a código no administrado por ejemplo,un archivo dll.Puede ocurrir cuando el cálculo de Referencias va horriblemente mal.

Nos puede decir si se llama a código no administrado?Si es así usted está utilizando por defecto el cálculo de Referencias o más cosas?Desde el aspecto de la traza de la pila está usando el código inseguro por ejemplo,Punteros y similares?Esta podría ser su problema.

Aquí está una descripción más detallada de stacktrace.A mí me parece que tiene algo que ver con el System.Windows.Form.dll

TargetSite aparece como {IntPtr DispatchMessageW(MSG ByRef)}
y bajo módulo tiene System.windows.forms.dll

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top