Gracias por estos últimos datos, LoPiTal. Delphi 7 genera un código similar, donde también se incluye el contador interno que mencionas.
El compilador transforma estas secciones Initialization y Finalization en una especie de procedimientos, añadiendo una primera instrucción que disminuye e incrementa el contador, respectivamente.
Si compilas con la opción "Use debug DCUs", podrás seguirle la pista a esas ejecuciones desde los procedimientos InitUnits y FinalizeUnits de la unidad System.pas (salvo que no estén presentes en Delphi 2010). Ahora comprendo el problema, pero no la causa, ya que, como dices, parece existir una disparidad entre las inicializaciones y las finalizaciones.
Una pregunta, ¿tu aplicación utiliza paquetes de tiempo de ejecución o DLLs hechas en Delphi?
Te recomiendo reducir de tamaño la aplicación al tiempo de probar este comportamiento, hasta encontrar qué unidad o paquete está desencadenando el problema.
Saludos.
Al González.
