Firefox ha estado en desventaja frente a sus competidores (Microsoft Edge, pero también Google Chrome) al ejecutarse en Windows durante los últimos cinco años. El problema era conocido por Mozilla desde mediados de 2018, pero no sus causas… al menos, hasta ahora.
Era tan exagerado que se llegaban a multiplicar por cinco los recursos que realmente requería Firefox, lo que en los casos más extremos provocaba bloqueos del sistema.
«Hace que Firefox se perciba como algo realmente lento», se quejaba hace cinco años Markus Jaritz, por aquel entonces diseñador de la aplicación. Ha sido, en resumen, un dolor de cabeza constante en estos últimos años para los ingenieros de Mozilla.
Se sabía, claro, que estaba relacionado con su interacción con el antimalware Windows Defender (bastaba un vistazo al Administrador de Tareas para saber esto, en realidad), pero no estaba claro si el bug residía en el software de la Fundación Mozilla o en el de Microsoft.
Uno de los ingenieros de la primera, Yannis Juglaret, a fuerza de investigar y documentar el problema, consiguió convencer a Microsoft de que volvieran a echarle un vistazo al informe remitido por Mozilla en 2018 y echaran ellos un vistazo por si la responsabilidad del mismo caía de su lado… como al final ha resultado ser.
A raíz de que el tema del consumo desmesurado de recursos volviera a salir a la palestra en Reddit hace tres meses, Juglaret publicó el documento original, acompañado en esta ocasión de las capturas de pantalla que mostraban cómo Firefox provocaba los picos de CPU a través de MsMpEng.exe… mientras que el navegador Chrome de Google no lo hacía.
El motivo final del problema ha sido un bug del sistema de protección en tiempo real de Microsoft Defender que realizaba demasiadas peticiones al kernel del sistema operativo, provocando una sobrecarga del procesador y, con ello, un rendimiento mucho peor del PC en cuanto se iniciaba el navegador de Mozilla.
«Con una configuración estándar de Firefox, la cantidad de llamadas a VirtualProtect es actualmente muy alta, y eso es lo que explica el elevado uso de la CPU con Firefox. […] desactivar JIT [el compilador de JavaScript] hace que MsMpEng.exe se comporte de forma mucho más razonable, ya que los motores JIT son el origen de la gran mayoría de las llamadas a VirtualProtect».
Se ha hecho de rogar, pero…
Ahora, ese fallo ha quedado corregido (Microsoft y Mozilla coinciden en señalar que, gracias al parche, el uso de la CPU se ha reducido en un 75%) en Windows 10 y 11 gracias a la actualización mensual de marzo, que los usuarios comenzaron a recibir ayer martes. La clave reside en la sustitución de un único fichero, ‘mpengine.dll‘.
Entre los planes de Microsoft a corto plazo se encuentra también el lanzamiento de este parche para las anteriores versiones con soporte de Windows: Windows 7 y Windows 8.1.