Firefox se congela con un 100% de uso de CPU durante 30 segundos al iniciar Chromium

22

Recientemente comencé a observar este comportamiento muy confuso y molesto, por no decir un comportamiento preocupante al abrir Firefox y luego iniciar Chromium:

Durante aproximadamente 30 segundos, los procesos secundarios de Firefox consumirían todos los recursos de CPU disponibles, lo que provocaría que los sitios web detuvieran el procesamiento (las páginas ya mostradas se congelan, las páginas nuevas muestran una página blanca con un círculo giratorio gris) mientras la ventana general sigue respondiendo (menús, desplazamiento de página , cambiar de pestaña, incluso páginas internas como about: config o about: preferencias funcionan ...). El cromo en sí no muestra ningún síntoma. Terminar Chromium nuevamente de inmediato, mientras Firefox está girando, no detiene el comportamiento más rápido.

Lo mismo sucede con mi perfil normal de Firefox, un nuevo perfil de Firefox intacto sin complementos, etc., Firefox comenzó en modo seguro con complementos deshabilitados, y Firefox comenzó en modo privado. Similar a Chromium, puedo iniciarlo con mi perfil normal, en modo incógnito o con un perfil temporal, generando siempre los mismos resultados.

No pasa nada extraño cuando Chromium se está ejecutando y abro Firefox.

Al iniciar Firefox desde un terminal, a veces recibo mensajes como estos cuando lo cierro mientras está girando (tenga en cuenta la línea de error de la tubería que menciona algunos ipc de cromo ...):

ExceptionHandler::GenerateDump cloned child 32165
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
[Parent 26520, Gecko_IOThread] WARNING: pipe error (52): Connection reset by peer: file /build/firefox-8oo9jx/firefox-62.0+build2/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 353
ExceptionHandler::GenerateDump cloned child 32274
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
ExceptionHandler::SendContinueSignalToChild sent continue signal to child

Curiosamente, no pude reproducir ese comportamiento en una cuenta de invitado o una cuenta regular (admin) recién creada.

Algunas especificaciones del sistema (actualizadas):

  • Ubuntu 16.04 (64 bits)
  • Firefox 62.0 + build2-0ubuntu0.16.04.5 63.0 + build2-0ubuntu0.16.04.2
  • Cromo 69.0.3497.81-0ubuntu0.16.04.1 70.0.3538.77-0ubuntu0.16.04.1
  • fontconfig 2.11.94-0ubuntu1.1
  • Hardware de gráficos: gráficos integrados Intel SkyLake (i5-6200U) + Nvidia GeForce 940M
    Actualmente tengo el nvidia-410controlador instalado, pero cambié al perfil Intel Prime. ¿Cómo puedo solucionar y solucionar este problema?

Hice un perfil de rendimiento con Gecko Profiler Extension, instalado en un perfil limpio y nuevo de Firefox en mi cuenta habitual de Ubuntu. Se puede encontrar aquí: https://perfht.ml/2zpTWsh : el marco de tiempo que no responde con un uso del 100% de la CPU debe corresponder aproximadamente al área resaltada en las líneas de tiempo de Content Proc, de aproximadamente 18 a 56 s.

Creé un informe de errores de Mozilla para este problema: https://bugzilla.mozilla.org/show_bug.cgi?id=1504461

Actualización importante: Aparentemente, mi informe de error fue un duplicado de https://bugzilla.mozilla.org/show_bug.cgi?id=1495900 , que señala fontconfigcomo el culpable. Parece que iniciar Chromium está haciendo un cambio en la configuración de la fuente de alguna manera, lo que desencadena una recarga completa en Firefox. Esto se ajusta al informe de perfil de rendimiento y también se alinea con la forma en que las actualizaciones anteriores de los paquetes de fuentes han desencadenado el mismo tipo de congelación.

¿Alguna idea de cómo puedo hacer que los tres (Firefox, Chromium, fontconfig) se comporten bien el uno con el otro?

Byte Commander
fuente
Todo lo que encuentro en la línea 353 de ipc_channel_posix.cc es una declaración de retorno verdadero. Por supuesto, el descanso de conexión por parte de un compañero es fatal nunca es un buen augurio. Lamentablemente no puedo reproducir este problema. Desearía poder ser de más ayuda.
Élder Geek
También tuve problemas esporádicos con CPU alta en Ubuntu, pero no puedo decir qué lo causó o lo resolvió. Hubo numerosos problemas abiertos que estaba rastreando relacionados con el alto uso de la CPU, por lo que me gustaría actualizar y esperar. Actualmente, no tengo ningún problema (o si lo hago, es una pestaña específica; por lo tanto, reiniciar el navegador o cerrar la pestaña lo resuelve). ¿Es posible actualizar de 16.04 a 18.10 (ya que, por supuesto, 16.04 es de 4/2016 y 18.10 es de 8/2018) ...? Y, fwiw, también cambié a kubuntu, lo que parece que me da menos dolores de cabeza. (Si es posible, arranque desde USB y experimente con ambos.)
michael
A veces tengo Firefox ejecutándose y luego abro Chrome (sé que es un poco diferente) y no he notado un alto uso de CPU. Quizás un aumento de 5 segundos de 18% de CPU a 30% de CPU en 8 CPU virtuales.
WinEunuuchs2Unix

Respuestas:

17

TL; DR: es un problema fontconfiganterior a la versión 2.13. Se puede solucionar actualizando el paquete a 2.13 o superior (aunque no pude encontrar un proveedor adecuado). Alternativamente, examine todas sus carpetas y archivos de configuración relacionados con las fuentes en su directorio de inicio y pruebe si eliminar cualquiera de ellos resuelve su problema. Para mí, renombrar ~/.fontshizo el truco.


Después de conocer los informes de errores https://bugzilla.mozilla.org/show_bug.cgi?id=1495900 y https://bugzilla.mozilla.org/show_bug.cgi?id=1411338 queda bastante claro que el problema debe ser causado por fontconfig.

De alguna manera, cuando se inicia Chromium, se activa un cambio en la base de datos de fuentes (???), lo que hace que Firefox, si se está ejecutando actualmente, vuelva a escanear el sistema de archivos en busca de fuentes de alguna manera, lo que resulta en el uso de la CPU y la congelación temporal.

Aparentemente, actualizar el fontconfigpaquete de la versión 2.11 a 2.13 (la versión incluida, por ejemplo, en Ubuntu 18.10) debería solucionar el problema, pero no encontré una manera fácil de obtener esa versión en 16.04, sin romper las dependencias de muchos otros paquetes que he instalado.

Entonces, como el problema se limita a mi cuenta de usuario, examiné la configuración de fuente local y las carpetas de mi usuario. Hay una gran lío de diferentes directorios de fuentes relacionadas para ser honesto, incluyendo ~/.fonts, ~/.local/share/fonts, ~/.local/share-font-manager, ~/.config/font-manager, ~/.cache/font-manager, ~/.cache/fontconfigy algunos archivos de configuración y otras cosas más de la fuente específica de la aplicación.

Comencé eliminando (renombrando) la ~/.fontscarpeta, ya que de todos modos no parecía contener nada útil, y un simple touch ~/.fonts/Library/antes provocó el mal comportamiento de Firefox. Después de que esa carpeta desapareció, también lo fue el problema al iniciar Chromium. \ o /

Byte Commander
fuente
Tiene sentido ya que no tengo ~/.fontsdirectorio. Todas las fuentes están en un directorio de todo el sistema.
WinEunuuchs2Unix
Aparentemente, se puede activar un error similar o incluso el mismo en 18.04 al iniciar también una ventana de terminal raíz. strace indica alguna E / S de archivo grave con respecto a los archivos de fuente. Curiosamente, esto no es solo un problema con Firefox solo, sino también con otras aplicaciones de xorg, así que supongo que también hay un problema dentro de xorg. Desafortunadamente, eliminar los directorios en cuestión no ayudó.
stefanct
1
Sin embargo, la actualización fontconfiga 2.13.0-5ubuntu3partir hicieron cósmica / 18.10 resolver el problema AFAICT. Este fue el error más extraño en mucho tiempo ... gracias por los consejos.
stefanct
@stefanct, ¿cómo conseguiste instalarlo sin romper cosas? Intenté forzar fontconfig y libfontconfig1 2.13 y quería eliminar mi DE completo, ejecutando 18.04
GM-Script-Writer-62850
@ GM-Script-Writer-62850 No recuerdo haber tratado libfontconfig1específicamente. En general, agregué los espejos biónicos a aptla lista y apliqué el anclaje apto para evitar instalar cualquiera de sus paquetes sin contarlo específicamente. Después, simplemente utilicé apt's -topción de este modo: apt install fontconfig -tcosmic. Estoy usando mate como DE ... tal vez no funcione tan fácilmente con otros DE.
stefanct
3

Antecedentes

Se ha propuesto este error de Firefox 1492360: alto uso de CPU cuando se abre Firefox antes de Chrome / Chrome . Es un duplicado del error 1495900: el inicio de Chrome hace que los procesos de contenido de Firefox se bloqueen durante aproximadamente dos minutos, debido al escaneo de fuentes FontConfig (FcInitReinitialize) , es el culpable.

Pero también estoy en Firefox:

Firefox version.png

Y cuando abro Chrome:

Chrome version.png

No veo ningún impacto en el rendimiento de las CPU.

Puede estar en contra de su moral, pero tal vez pueda intentar instalar google-chrome-stablecomo yo. Luego haz la prueba nuevamente. Si no hay un pico de uso de la CPU al 100%, se podría presentar un informe de error entre Chromium y Chrome.

Estoy en Ubuntu 16.04.5 LTS. Aunque el núcleo es actualmente la 4.14.78cadena LTS, no creo que tenga nada que ver con eso, ya que tampoco noté golpes de CPU en núcleos anteriores.

La única vez que veo todas las CPU al 100% es durante update-initramfs.


fontconfig verson

En el informe de error se revela:

$ dpkg -l 'fontconfig*' | grep "^ii"
ii  fontconfig        2.12.6-0ubuntu2 amd64        generic font configuration library - support binaries
ii  fontconfig-config 2.12.6-0ubuntu2 all          generic font configuration library - configuration

En mi versión sin errores (aunque podría deberse a que no hay fuentes locales):

$ dpkg -l 'fontconfig*' | grep "^ii"
ii  fontconfig        2.11.94-0ubuntu1.1 amd64        generic font configuration library - support binaries
ii  fontconfig-config 2.11.94-0ubuntu1.1 all          generic font configuration library - configuration

Estoy en una 2.11.94versión anterior a la versión de informe de errores 2.12. En el informe de errores, la actualización 2.13es una solución recomendada, pero OP mencionada en los comentarios no es posible. Como tal, 2.11.94 podría ser una opción.

WinEunuuchs2Unix
fuente
Bueno, no, no tengo la intención de instalar Chrome. Sin embargo, descubrí que el culpable es fontconfigahora. Probablemente tenga diferentes (o no) fuentes locales instaladas en su cuenta de usuario. Encontré una solución alternativa para eliminar (cambiar el nombre) de la ~/.fontscarpeta, lo que soluciona el problema. Aparentemente, también actualizar a fontconfig> = versión 2.13 debería solucionarlo, pero no puedo hacerlo en 16.04.
Byte Commander
Sí, las únicas fuentes que he instalado son para códigos de barras (código 3 de 9) que se ttfusan y se usan en procesadores de texto / hojas de cálculo. Desafortunadamente, tuviste que resolver tu propia pregunta de recompensa, pero si te sirve de consuelo, me ha sucedido lo mismo en el pasado.
WinEunuuchs2Unix
Agregué la degradación fontconfigcomo una opción para que coincida con mi versión, pero esa es una "leve esperanza" dado que puede haber venido de allí. Si tiene un enlace para instalar fuentes locales, lo intentaré para confirmar / negar el efecto de una fontconfigversión anterior .
WinEunuuchs2Unix
Mi versión de fontconfiges 2.11.94-0ubuntu1.1también, esa no está libre de errores. Supongo que debe ser una combinación de las fuentes instaladas, la configuración de fuente personalizada y la magia negra. Mira mi respuesta. :)
Byte Commander
1

A juzgar por el registro, parece que Firefox está utilizando IPC síncrono (comunicación entre procesos) por alguna razón. Hay indicadores en Firefox para activar explícitamente el IPC síncrono (por ejemplo: network.cookie.ipc.sync). Uno de esos podría estar habilitado. Puede acceder a estos desde la página about: config

El retraso sería el resultado de que Firefox esperara la respuesta. Como no hay carga cuando Chromium ha terminado de iniciarse o no se está ejecutando activamente, hay una respuesta inmediata.

Relacionado: https://bugzilla.mozilla.org/show_bug.cgi?id=1331680

Aswin B
fuente
Cambié el valor de esta network.cookie.ipc.syncconfiguración de falso a verdadero y viceversa, reiniciando Firefox después de cada cambio, pero aún así el mismo comportamiento :( Todavía no entiendo por qué Firefox y Chromium incluso se comunicarían en primer lugar, deberían preocuparse por sí mismos negocios cada uno.
Byte Commander
1
Había borrado esto porque descubriste que la razón real no estaba relacionada, pero ¿creo que debería dejar esto aquí como causa probable?
Aswin B
0

No sé si la siguiente sugerencia funcionará o no. Puedes intentarlo. Intente eliminar el cromo y Firefox por completo (mantenga los archivos .deb, por supuesto) con Synaptic Package Manager. Después de eso, verifique si hay dependencias rotas. Solucionarlos utilizando sináptica (si existe). Ahora verifique el uso de la CPU (uso Powertop). Finalmente, vuelva a instalar los navegadores.

Nota: Estas cosas son generalmente lo que hago en caso de anormalidades específicas. Recuerdo enfrentar un problema ligeramente similar hace un año. Se resolvió de esta manera.

Hirak
fuente
No, la purga y la reinstalación de todos los paquetes de firefox * y chromium * no cambiaron nada.
Byte Commander
¿Las estadísticas inactivas y los widgets de estadísticas de frecuencia de Powertop muestran un 100% de uso cuando lanzas Chrome?
Hirak
Sí, muestra alrededor del 112% para "C0 activo" en cada núcleo en las estadísticas inactivas, y las estadísticas de frecuencia informan la frecuencia máxima (2.7GHz) y el 0% inactivo en cada núcleo. La pestaña de descripción general muestra todos los procesos de Firefox en la parte superior de la lista, con aproximadamente 600-900 ms / s de tiempo de cómputo cada uno, pero cero eventos / s.
Byte Commander
0

En Ubuntu 16.04, eliminar la carpeta vacía lo ~/.local/share/fontsresolvió en mi caso.

Djalal M.
fuente