Tenía un código en una aplicación ASP.NET que se ejecuta en Server 2008 R2 + IIS 7.5. Cada vez que cargaba una página en particular, se colgaba para siempre y enviaba IIS al 100% de uso de la CPU. Finalmente rastreé el problema.El desbordamiento de pila en .NET envía IIS al 100% de uso de la CPU, ¿por qué no StackOverflowException?
public string Comments
{
get { return this.Comments; }
}
Oops - debería haber sido return this.Photo.Comments
. Entonces, mi pregunta es, ¿por qué .NET no generó una StackOverflowException, sino que dejó que IIS se ejecutara al 100% de CPU por mucho más tiempo del que debería haber tomado. En mi experiencia de programación con .NET, toma unos segundos o menos para obtener una StackOverflowException al hacer algo como lo anterior. Entonces, ¿cómo podría seguir funcionando durante casi 30 minutos en IIS?
¿El proceso del trabajador tal vez murió y volvió a intentar la operación? Accidentalmente codifiqué un SO el otro día, y mató ASP.NET (Sharepoint en mi caso) bastante rápido. – leppie
Dado que .net 4 optimiza la recursividad de cola, esto podría haberse reescrito en un bucle. Puede verificar esto mirando el IL. – Heinzi
¿Esto es ASP.NET 2.0 o 4.0? – Kev