Kevin envió a The Daily WTF un manejador de excepciones encontrado en una base de código C++. Captura Exception::Deadlock y ejecuta una sola instrucción: retry. No es una palabra clave de C++, así que debe tratarse de una macro, probablemente una que envuelve un goto que salta de vuelta al inicio del bloque protegido.
catch (Exception::Deadlock)
{
retry;
}El problema es de fondo. Un deadlock significa que este hilo espera un recurso que retiene otro hilo, el cual a su vez espera un recurso retenido por el primero. Reintentar solo sirve si el retry libera primero los recursos propios, permitiendo que el otro hilo continúe. Según Kevin, este retry no libera nada. Simplemente salta arriba reteniéndolo todo, garantizando el mismo deadlock una y otra vez.
El colmo: el código ya sufría una pila de deadlocks, así que la empresa contrató a un consultor muy bien pagado para corregirlos reordenando accesos y rastreando el uso de mutexes. Este manejador es el resultado de ese encargo. Veredicto de Kevin: parece que el consultor quiso añadir algunos deadlocks propios.
Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.