El Bruno

Blog dedicado a las experiencias del desarrollo con tecnologías Microsoft.
If .Net.Crash = True Then Report() ... (eso me pasa por probar con C#)

Buenas

estaba comentando con unos compañeros la utilización de String.IsNullOrEmpty en las aplicaciones para mejorar la performance de las mismas (sumado al uso de StringBuilder, etc.); cuando mi proyecto de ejemplo de Consola de C# se estrelló estrepitosamente contra la memoria de Windows.

Después de buscar un rato la solución (y pensando que el error era mío), me encuentro con este bug de C# (yes C# no VB):

Null Exemption caused by JIt optimisation around String.IsNullOrEmpty

 

Lo resumo en pocas palabras, si dentro de una aplicación de Consola utilizamos la función String.IsNullOrEmpty con un valor nulo, el exe compilado de la aplicación en modo Release disparará un error cuando lo ejecutemos. Pueden probar con el código de ejemplo del bug

1 static void Main(string[] args) 2 { 3 Console.WriteLine("starting"); 4 test(null); 5 Console.WriteLine("finished"); 6 Console.ReadLine(); 7 } 8 static void test(string x) 9 { 10 for (int j = 0; j < 10; j++) 11 { 12 if (String.IsNullOrEmpty(x)) 13 { 14 //TODO: 15 } 16 } 17 }

 

Lo interesante del tema, al margen de la solución del error para Microsoft Visual Studio 2008, es la capacidad que tenemos para reportar errores sobre Visual Studio, .Net Fwk, etc.; y como el equipo de desarrollo de Microsoft está al tanto de los mismos.

Pero no solo errores podemos reportar en la sección de Feedback del Connect de Visual Studio, también podremos realizar sugerencias para mejorar funcionalidades existentes de Visual Studio o para agregar nuevas.

Además, si estamos anotados en los programas de Beta Tester de algún producto y participas activamente con reportes de errores y sugerencias, algún detallito tendrá la gente de Visual Studio contigo ... (aunque no me sirve de mucho tener varios juegos para la XBox 360 en Seattle jejeje)

 

Pues bien, a no desarrollar en C# tener cuidado con la depuración de errores y mucho más en aplicaciones de consola C# con String.IsNullOrEmpty en las mismas :D

 

Saludos desde Lisboa

El Bruno

Published martes, 18 de septiembre de 2007 10:54 by elbruno

Filed under: ,

Comments

# [VS2005] Strings vs StringBuilders@ jueves, 20 de septiembre de 2007 16:26

Buenas después del minipost de hace unos días sobre la utilización de String.IsNullOrEmpty en el desarrollo

El Bruno

# [VS2005] Strings vs StringBuilders@ jueves, 20 de septiembre de 2007 16:27

Buenas después del minipost de hace unos días sobre la utilización de String.IsNullOrEmpty en el desarrollo

El Bruno

# [VS2005] Strings vs StringBuilders@ jueves, 20 de septiembre de 2007 16:27

Buenas después del minipost de hace unos días sobre la utilización de String.IsNullOrEmpty en el desarrollo

El Bruno

# re: If .Net.Crash = True Then Report() ... (eso me pasa por probar con C#)@ jueves, 20 de septiembre de 2007 20:04

No se que da más miedo, el fallo en si ó que todavía este sin parchear, por si a alguien le faltan buenas razones para pasar a 3.5 ... ya sabe :D

Yo estuve jugando un poco con él y no parece algo fácil de tener controlado, casi mejor no usarlo:

elbruno.com/.../el-bug-de-string-isnullorempty-en-net-2-0.aspx

vtortola

# Saber si una cadena está vacía en C#@ jueves, 25 de octubre de 2007 20:54

Comprobar si una variable de tipo string está vacía es una tarea que seguro realizamos muy a menudo en

Variable not found, 0:1

# Hecgo.com &raquo; Bug en string.IsNullOrEmpty() del .NET Framework 2.0@ viernes, 26 de octubre de 2007 21:37

Pingback from  Hecgo.com  &raquo; Bug en string.IsNullOrEmpty() del .NET Framework 2.0

Hecgo.com » Bug en string.IsNullOrEmpty() del .NET Framework 2.0