Hemos estado tratando de encontrar algunos problemas de corrupción de montón en nuestras aplicaciones multiproceso de C++. Como una técnica, tratamos de agregar -lmcheck a la línea de bibliotecas de la aplicación. Esto está causando que la aplicación se bloquee con aparente corrupción de montón en relativamente poco tiempo.opción '-lmcheck' de glibc y multiprocesamiento
Nuestra aplicación utiliza malloc/free y new/delete (según corresponda).
Uno de nuestro equipo se preguntó si -lmcheck en realidad era seguro para subprocesos, y puso un mutex alrededor de todas las llamadas malloc/free. Los accidentes se fueron.
¿Alguien sabe si -lmcheck se supone que es compatible con multi-threading? Me pregunto si simplemente comprendemos mal la herramienta que estamos tratando de utilizar y, por lo tanto, nos causamos preocupaciones innecesarias.
Interesante. ¿Significa eso que la "solución" del interrogador, aunque parece haber evitado los bloqueos, no es realmente válida, y que mcheck no puede ayudarlo con su aplicación? –
No sé lo suficiente acerca de la implementación actual de mcheck o los cambios que se hicieron en el código que se está probando para responder esa pregunta, pero probablemente me mantendría alejado de ella y encontraría otras herramientas para usar en su lugar. –