Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: mmob en 27 Febrero 2008, 10:53 am



Título: Excepcion de anticipacion de E/S al acceder a MySQL desde .NET
Publicado por: mmob en 27 Febrero 2008, 10:53 am
Hola a todos, a ver si a alguien le suena esta excepción que genera mi programa. La aplicación esta creada en C# 2005 y se accede a una base de datos MySQL utilizando el conector ADO.NET driver for MySQL versión 5.1.4.0

Normalmente funciona de forma correcta, pero de vez en cuando, sin hacer nada especial y al intentar cualquier operación sobre la base de datos genera una excepción con el siguiente mensaje:

Se detectó una posible condición de anticipación de E/S al copiar la memoria. El paquete de E/S no es seguro para subprocesos de forma predeterminada. En las aplicaciones multiproceso se debe tener acceso a la secuencia de forma segura para los subprocesos, como un contenedor seguro para subprocesos devuelto por los métodos sincronizados de TextReader o TextWriter. Esto también se aplica a clases como StreamWriter y StreamReader.

Si le pido el nombre del objeto o aplicación que generó el error me dice que: mscorlib

Y el StackTrace de una de estas excepciones (este en concreto al intentar un UPDATE sobre una tabla) es el siguiente:
   en System.Buffer.InternalBlockCopy(Array src, Int32 srcOffset, Array dst, Int32 dstOffset, Int32 count)
   en System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count)
   en MySql.Data.MySqlClient.MySqlStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   en MySql.Data.MySqlClient.MySqlStream.ReadByte()
   en MySql.Data.MySqlClient.MySqlStream.SkipBytes(Int32 len)
   en MySql.Data.MySqlClient.MySqlStream.OpenPacket()
   en MySql.Data.MySqlClient.NativeDriver.ReadResult(UInt64& affectedRows, Int64& lastInsertId)
   en MySql.Data.MySqlClient.MySqlDataReader.GetResultSet()
   en MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   en MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   en MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
   en MySql.Data.MySqlClient.MySqlConnection.BeginTransaction(IsolationLevel iso)
   en Gestion.Source.ModeloBD.ActualizarRegistro(Registro registro) C:\Proyectos\My SQL\Gestion\Gestion\Source\ModeloBD.cs:línea 458


Además, al no ocurrir siempre es mas difícil arreglarlo. Gracias por vuestro tiempo.
Saludos


Título: Re: Excepcion de anticipacion de E/S al acceder a MySQL desde .NET
Publicado por: abel_c_b en 27 Febrero 2008, 20:38 pm
Estas utilizando hebras? si asi es pues revisa esta parte del codigo ya que po lo que leo "El paquete de E/S no es seguro para subprocesos de forma predeterminada. En las aplicaciones multiproceso se debe tener acceso a la secuencia de forma segura para los subprocesos, como un contenedor seguro para subprocesos devuelto por los métodos sincronizados de TextReader o TextWriter", es donde presenta problemas

saludos


Título: Re: Excepcion de anticipacion de E/S al acceder a MySQL desde .NET
Publicado por: alexelprogramador en 29 Marzo 2008, 22:40 pm
mira, yo tambien uso mysqlconnector.net porque me interesa,  y tambien he tenido problemillas, pero mas que por culpa de usar mysql, por usar visual studio  ;D ya que tambien peta cuando le da la gana.
dime si estas haciendo un programa con asp.net

si es asi, revisa la configuracion del global.asax


Título: Re: Excepcion de anticipacion de E/S al acceder a MySQL desde .NET
Publicado por: MaLkAvIaN_NeT en 30 Marzo 2008, 18:45 pm
ese driver funciona correctamente si no lo haces por algún error nuestro te recomiendoponer el fragmento de codigo