jueves, 10 de abril de 2008

System.AccessViolationException, o el error que me esta volviendo loco

Hoy me ha pasado una cosa de esas que de vez en cuando (y menos mal) suelen pasar. Una aplicación provoca un error en el JIT de los que quitan el hipo:

System.AccessViolationException: Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.

en System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
en System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
en System.Windows.Forms.Control.DefWndProc(Message& m)
en System.Windows.Forms.Control.WndProc(Message& m)
en System.Windows.Forms.ComboBox.WndProc(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


El form donde se produce el error es muy simple. Una combobox de estilo simple con la propiedad del autocomplete, para que se vaya autocompletando según va escribiendo el usuario. Lo más divertido del problema es que sólo le pasa al cliente. He probado en varios ordenadores, con varios sistemas operativos y nada, sólo le falla a él.

Rebuscando por internet me he contrado con este post en el que se cita:

I'm having the same problem. I have a .NET 2.0 winforms application built in VS2005. I recently changed a combobox on the forms to use the "AutoComplete" functionality and this error started showing up, but only after the user has changed the selection on the combo box many times. First, a BIG slowdown in performance is noticed and then, on anotherchange of the combo selection, this error occurs

Y justo. Yo utilizo Visual Studio 2005 con .Net Framework 2.0, con una combobox y el famoso autocomplete. A si que, de momento, y a esperas de conseguir una solución (¿quizás algún update?) he tenido que modificar el funcionamiento de esa pantalla y cambiar la combobox que estaba dando el problema.

Lo que más me mosquea es no haber sido capaz de reproducir el error y el hecho de que hay otras combobox por el programa con el autocomplete que no están dando problemas. A si que claro ¿porque falla sólo esa?. Como podeis ver, es uno de esos fallos misteriosos que me parece que no voy a ser capaz de averiguar porque pasa. Si a vosotros os ha sucedido algo similar, y habéis sido capaces de solucionarlo, os agradecería que lo comentáseis en los comentarios para evitar estos errores tan divertidos.

6 comentarios:

Anónimo dijo...

Seguramente tu tengas el hotfix y el cliente no. En las empresas se burocratiza demasiado y terminan estando bastante atrasadas en lo que a actualizaciones se refiere.

Unknown dijo...

Pudiste encontrar solución a este problema? Puesto que estoy luchando con el mismo problema.

Saludos!

Anónimo dijo...

Solucioné el problema en la siguiente web:
http://jtstroup.net/post/Attempted-to-read-or-write-protected-memory-This-is-often-an-indication-that-other-memory-is-corrupt.aspx

Carlos Ospino dijo...

Estoy intentando ejecutar esta porción de código y me sale ese error (Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.) que pasa, ayuda please!

Dim ResultadoDia As New OleDbCommand("SELECT AVG(Long_2_Mano)", ConexionPesosoft)
Dim R As OleDbDataReader
ConexionPesosoft.Open()

R = ResultadoDia.ExecuteReader

If R.Read Then
Label18.Text = R(0)
End If

ConexionPesosoft.Close()

Anónimo dijo...

en mi caso encontré el problema, si el textBox o el comboBox está en un groupBox arroja el error, caso contrario no.. prueben! quizás le sea útil el comentario..

Gabriel Alfredo dijo...

El error no es porque donde ste ubicado el objeto que receptor de cualquier dato, yo estoy pariendo,buscando, a vecez funciona otras no, para leer un excel con unos datos....