Generación de mensajes de error significativos en herramienta de detección estática de deadlocks para programas en Go - Furman, Damián Ariel (2019)
Go es un lenguaje de programación que incorpora la comunicación a través del intercambio de mensajes dentro de su set básico de instrucciones. Lange, Ng, Toninho y Yoshida proponen un sistema de tipos sesión para analizar propiedades sobre aspectos de comunicación en programas Go, como por ejemplo ausencia de deadlocks parciales y errores de comunicación. Esta técnica ha sido implementada en dos herramientas, Dingo-Hunter y Gong, que toman un programa Go e indican si cumple o no con estas propiedades. Sin embargo, su implementación no aporta más información que pueda servir al usuario para mejorar su código si existe algún problema. El objetivo del siguiente trabajo es mejorar la usabilidad de la herramienta incorporando feedback que pueda ser usado para resolver el problema encontrado. Para esto, se desarrolla una modificación de la implementación del tipo sesión que genera trazas de las posibles ejecuciones de los programas a analizar. Luego, cuando un programa no satisface alguna de las propiedades mencionadas, se indica qué instrucción genera el problema, en que número de línea y cuál es la traza de la ejecución que la generó, indicando invocaciones a funciones y sincronizaciones (envío y recepción correctos de un mensaje) previas.