Blocco di Firefox con utilizzo della CPU al 100% per 30 secondi all'avvio di Chromium


22

Di recente ho iniziato a osservare questo comportamento molto confuso e fastidioso, per non dire preoccupante quando si ha Firefox aperto e si avvia Chromium:

Per circa 30 secondi, i processi figlio di Firefox consumerebbero tutte le risorse della CPU disponibili, causando l'interruzione del rendering dei siti Web (blocchi della pagina già visualizzati, nuove pagine mostrano una pagina bianca con un cerchio grigio) mentre la finestra generale è ancora reattiva (menu, scorrimento pagine , cambiando scheda, anche pagine interne come about: config o about: le preferenze funzionano ...). Il cromo stesso non mostra alcun sintomo. La chiusura immediata di Chromium, mentre Firefox gira, non interrompe il comportamento più rapidamente.

Lo stesso accade con il mio profilo Firefox normale, un profilo Firefox nuovo, intatto, senza componenti aggiuntivi, ecc., Firefox è stato avviato in modalità provvisoria con i componenti aggiuntivi disabilitati e Firefox è stato avviato in modalità privata. Simile a Chromium, posso avviarlo con il mio profilo normale, in modalità di navigazione in incognito o con un profilo temporaneo, generando sempre gli stessi risultati.

Non succede nulla di strano quando Chromium è in esecuzione e apro Firefox.

Quando avvio Firefox da un terminale, a volte ricevo messaggi come questi quando lo chiudo mentre gira (nota la riga di errore del tubo che menziona alcuni ipc di 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

Stranamente non sono riuscito a riprodurre quel comportamento in un account ospite o in un account normale (admin) appena creato.

Alcune specifiche di sistema (aggiornate):

  • Ubuntu 16.04 (64 bit)
  • 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 grafico: grafica integrata Intel SkyLake (i5-6200U) + Nvidia GeForce 940M
    Attualmente ho il nvidia-410driver installato, ma sono passato al profilo principale Intel. Come posso risolvere ulteriormente e risolvere questo problema?

Ho creato un profilo prestazionale con l'estensione Gecko Profiler, installato su un profilo Firefox pulito e pulito sul mio normale account Ubuntu. Può essere trovato qui: https://perfht.ml/2zpTWsh - L'intervallo di tempo che non risponde con un utilizzo della CPU del 100% dovrebbe corrispondere all'incirca all'area evidenziata nelle timeline di Content Proc, dai 18 ai 56 anni circa.

Ho creato un rapporto sui bug di Mozilla per questo problema: https://bugzilla.mozilla.org/show_bug.cgi?id=1504461

Aggiornamento importante: a quanto pare la mia segnalazione di bug era un duplicato di https://bugzilla.mozilla.org/show_bug.cgi?id=1495900 , che indica fontconfigil colpevole. Sembra che l'avvio di Chromium stia apportando in qualche modo una modifica alla configurazione dei caratteri, il che innesca un ricaricamento completo in Firefox. Ciò si adatta al rapporto sulla profilazione delle prestazioni e si allinea anche al modo in cui gli aggiornamenti precedenti ai pacchetti di font hanno attivato lo stesso tipo di blocco.

Qualche idea su come posso fare in modo che i tre (Firefox, Chromium, fontconfig) si comportino bene l'uno con l'altro?


Tutto quello che trovo alla riga 353 di ipc_channel_posix.cc è una dichiarazione di ritorno vero. Ovviamente, il resto della connessione in base al peer fatale non promette nulla di buono. Purtroppo non riesco a riprodurre questo problema. Vorrei poter essere di maggiore aiuto.
Elder Geek,

Ho anche avuto problemi sporadici con alta CPU su Ubuntu, ma non posso dire cosa l'abbia causato o risolto. Ci sono stati numerosi problemi aperti che stavo monitorando relativi all'utilizzo elevato della CPU - quindi, aggiornerei e spero. Attualmente, non sto riscontrando alcun problema (o, in caso affermativo, si tratta di una scheda specifica; quindi, riavviare il browser o chiudere la scheda per risolverlo). È possibile effettuare l'aggiornamento dal 16.04 al 18.10 (come, ovviamente, il 16.04 è dal 4/2016 e il 18.10 è dall'8/2018) ...? E, prima di tutto, sono passato anche a Kubuntu, che sembra darmi meno mal di testa. (Se possibile, avvia da USB e sperimenta con entrambi.)
michael

A volte ho Firefox in esecuzione e quindi apro Chrome (so che è un po 'diverso) e non ho notato alcun utilizzo elevato della CPU. Forse un picco di 5 secondi dal 18% della CPU al 30% della CPU su 8 CPU virtuali.
WinEunuuchs2Unix

Risposte:


17

TL; DR: è un problema con la fontconfigversione precedente 2.13. Può essere risolto aggiornando il pacchetto a 2.13 o versioni successive (anche se non sono riuscito a trovare un provider adatto). In alternativa, esamina tutte le cartelle relative ai caratteri e i file di configurazione nella tua home directory e verifica se rimuovendone una qualsiasi risolvi il problema. Per me, la ridenominazione ha ~/.fontsfatto il trucco.


Dopo aver appreso delle segnalazioni di bug https://bugzilla.mozilla.org/show_bug.cgi?id=1495900 e https://bugzilla.mozilla.org/show_bug.cgi?id=1411338 diventa piuttosto chiaro che il problema deve essere causato da fontconfig.

In qualche modo, all'avvio di Chromium, viene attivato un cambiamento nel database dei caratteri (???), che in qualche modo Firefox - se attualmente in esecuzione - esegue nuovamente la scansione del file system alla ricerca di caratteri, con conseguente utilizzo della CPU e blocco temporaneo.

Apparentemente l'aggiornamento del fontconfigpacchetto dalla versione 2.11 alla 2.13 (la versione fornita ad esempio in Ubuntu 18.10) dovrebbe risolvere il problema, ma non ho trovato un modo semplice per ottenere quella versione su 16.04, senza interrompere le dipendenze di molti altri pacchetti che ho installato.

Quindi, poiché il problema è limitato al mio account utente, ho esaminato la configurazione e le cartelle dei caratteri locali del mio utente. C'è un bel pasticcio di diverse directory relative ai font ad essere onesti, tra cui ~/.fonts, ~/.local/share/fonts, ~/.local/share-font-manager, ~/.config/font-manager, ~/.cache/font-manager, ~/.cache/fontconfige alcuni file di configurazione di più e cose del carattere specifico dell'applicazione.

Ho iniziato rimuovendo (rinominando) la ~/.fontscartella, in quanto non sembrava contenere nulla di utile comunque, e un semplice touch ~/.fonts/Library/prima di ciò ha innescato il comportamento scorretto di Firefox. Dopo che quella cartella era sparita, lo era anche il problema all'avvio di Chromium. \ o /


Ha senso in quanto non ho ~/.fontsdirectory. Tutti i caratteri si trovano in una directory di sistema.
WinEunuuchs2Unix

Apparentemente un bug simile o addirittura lo stesso può essere attivato su 18.04 avviando anche una finestra del terminale di root. strace indica alcuni I / O di file seri relativi ai file di caratteri. È interessante notare che questo non è solo un problema con Firefox da solo, ma anche con altre applicazioni xorg, quindi presumo un problema anche all'interno di xorg. Purtroppo la cancellazione delle directory in questione non ha aiutato.
stefanct,

1
Tuttavia, l'aggiornamento fontconfiga 2.13.0-5ubuntu3da cosmico / 18.10 ha risolto il problema AFAICT. Questo è stato il bug più strano da un po 'di tempo ... grazie per i suggerimenti.
stefanct,

@stefanct come hai fatto a installarlo senza rompere le cose, ho provato a forzare fontconfig e libfontconfig1 2.13 e apt volevo rimuovere tutto il mio DE, eseguendo 18.04
GM-Script-Writer-62850

@ GM-Script-Writer-62850 Non ho alcun ricordo di trattare con nello libfontconfig1specifico. In generale ho aggiunto i mirror bionici aptall'elenco e applico il pin appropriato per evitare di installare uno dei suoi pacchetti senza dirlo in modo specifico. Poi ho semplicemente usato apt's -topzione in questo modo: apt install fontconfig -tcosmic. Sto usando mate come DE ... forse non funziona così facilmente con altri DE.
Stefanct,

3

sfondo

È stato proposto questo Bug 1492360 di Firefox: elevato utilizzo della CPU quando si apre firefox prima di chrome / chromium . Questo è un duplicato del Bug 1495900: l' avvio di Chrome fa sospendere i processi di contenuto di Firefox per circa due minuti, a causa della nuova scansione dei font FontConfig (FcInitReinitialize) , è il colpevole.

Ma sono anche su Firefox:

Firefox version.png

E quando apro Chrome:

Chrome version.png

Non vedo alcun impatto sulle prestazioni delle CPU.

Potrebbe essere contro la tua morale, ma forse puoi provare a installarlo google-chrome-stablecome ho fatto io. Quindi ripetere il test. Se non vi è un picco di utilizzo della CPU al 100%, è possibile archiviare una segnalazione di bug tra Chromium e Chrome.

Sono su Ubuntu 16.04.5 LTS. Sebbene il kernel sia attualmente una 4.14.78catena LTS, non penso che abbia nulla a che fare con esso poiché non ho notato neanche i successi della CPU sui kernel precedenti.

L'unica volta che vedo tutte le CPU al 100% è durante update-initramfs.


fontconfig verson

Nella segnalazione di bug è rivelato:

$ 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

Nella mia versione non buggy (potrebbe essere a causa della mancanza di caratteri locali):

$ 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

Sono alla 2.11.94versione precedente alla versione di segnalazione bug 2.12. Nella segnalazione di bug l'aggiornamento a 2.13è una soluzione consigliata ma OP menzionato nei commenti non è possibile. Come tale 2.11.94 potrebbe essere un'opzione.


Bene no, non intendo installare Chrome. Tuttavia, ho scoperto che il colpevole è fontconfigora. Probabilmente hai caratteri locali diversi (o no) installati nel tuo account utente. Ho trovato una soluzione alternativa per rimuovere (rinominare) la ~/.fontscartella, che risolve il problema. Apparentemente anche l'aggiornamento a fontconfig> = versione 2.13 dovrebbe risolverlo, ma non posso farlo il 16.04.
Byte Commander

Sì, gli unici caratteri che ho installato sono per i codici a barre (codice 3 di 9) che sono ttfe utilizzati in elaboratori di testi / fogli di calcolo. Peccato che tu abbia dovuto risolvere la tua domanda sulla generosità, ma se è una consolazione lo stesso mi è successo in passato.
WinEunuuchs2Unix

Ho aggiunto il downgrade fontconfigcome opzione per abbinare la mia versione, ma questa è una "debole speranza" dato che potresti essere venuto da lì. Se si dispone di un collegamento per l'installazione di caratteri locali, proverò a confermare / negare l'effetto della fontconfigversione precedente .
WinEunuuchs2Unix

La mia versione di fontconfigè 2.11.94-0ubuntu1.1troppo, che non si è privo di bug. Deve essere una combinazione di caratteri installati, configurazione di caratteri personalizzati e magia nera, immagino. Controlla la mia risposta :)
Byte Commander

1

A giudicare dal registro, sembra che Firefox stia utilizzando l'IPC sincrono (comunicazione tra processi) per qualche motivo. Ci sono flag in Firefox per attivare esplicitamente l'IPC sincrono (ad esempio: network.cookie.ipc.sync). Uno di questi potrebbe essere abilitato. Puoi accedervi da about: config pagina

Il ritardo sarebbe quindi il risultato di firefox in attesa della risposta. Poiché non c'è carico quando Chromium ha terminato l'avvio o non è in esecuzione attivamente, c'è una risposta immediata.

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


Ho commutato il valore di questa network.cookie.ipc.syncconfigurazione da falso a vero e viceversa, riavviando Firefox dopo ogni modifica, ma mantenendo sempre lo stesso comportamento :( Non capisco ancora perché Firefox e Chromium potrebbero persino comunicare in primo luogo, dovrebbero preoccuparsi dei propri affari ciascuno
Byte Commander

1
Ho cancellato questo dato che hai trovato il motivo effettivo non correlato, ma immagino che dovrei lasciarlo qui come probabile causa?
Aswin B,

0

Non so se il seguente suggerimento funzionerà o meno. Puoi provare. Prova a rimuovere chromium e firefox completamente (mantieni ovviamente i file .deb) usando Synaptic Package Manager. Successivamente verifica se ci sono dipendenze interrotte. Risolvili usando synaptic (se presente). Ora controlla l'utilizzo della CPU (io uso Powertop). Infine esegui una nuova reinstallazione dei browser.

Nota: queste cose sono generalmente ciò che faccio in caso di anomalie specifiche. Ricordo di aver affrontato un problema leggermente simile un anno fa. È stato risolto in questo modo.


No, eliminare e reinstallare tutti i pacchetti firefox * e chromium * non ha cambiato nulla.
Byte Commander

i widget delle statistiche inattive e delle statistiche di frequenza di powertop mostrano un utilizzo del 100% quando avvii il cromo?
Hirak,

Sì, mostra circa il 112% per "C0 attivo" su ogni core nelle statistiche inattive e le statistiche di frequenza riportano la frequenza massima (2,7 GHz) e lo 0% inattiva su ciascun core. La scheda panoramica mostra tutti i processi di Firefox in cima all'elenco, con circa 600-900ms / s di tempo di elaborazione ciascuno, ma zero eventi / s.
Byte Commander

0

Su Ubuntu 16.04, l'eliminazione della cartella vuota l'ha ~/.local/share/fontsrisolta nel mio caso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.