Firefox membeku dengan penggunaan CPU 100% selama 30 detik saat meluncurkan Chromium

22

Baru-baru ini saya mulai mengamati ini sangat membingungkan dan menjengkelkan, belum lagi perilaku yang mengkhawatirkan ketika Firefox dibuka dan kemudian meluncurkan Chromium:

Selama sekitar 30 detik, proses anak Firefox akan menghabiskan semua sumber daya CPU yang tersedia, menyebabkan situs web menghentikan render (halaman yang sudah ditampilkan terhenti, halaman baru menampilkan halaman putih dengan lingkaran berputar abu-abu) sementara jendela keseluruhan masih responsif (menu, halaman bergulir) , berpindah tab, bahkan halaman internal seperti tentang: config atau tentang: preferensi berfungsi ...). Chromium sendiri tidak menunjukkan gejala apa pun. Segera menghentikan Chromium, saat Firefox berputar, tidak menghentikan perilaku ini lebih cepat.

Hal yang sama terjadi dengan profil Firefox saya yang biasa, profil Firefox yang sama sekali baru dan tanpa tersentuh, dll., Firefox memulai dalam mode aman dengan add-on dinonaktifkan, dan Firefox memulai dalam mode pribadi. Mirip dengan Chromium, saya dapat meluncurkannya dengan profil reguler saya, dalam mode penyamaran atau dengan profil sementara, selalu menghasilkan hasil yang sama.

Tidak ada yang aneh terjadi ketika Chromium berjalan dan saya membuka Firefox.

Saat meluncurkan Firefox dari terminal, saya terkadang mendapatkan pesan seperti ini ketika saya berhenti ketika sedang berputar (perhatikan baris kesalahan pipa yang menyebutkan beberapa kromium ipc ...):

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

Anehnya, saya tidak dapat mereproduksi perilaku itu di akun tamu atau akun reguler (admin) yang baru dibuat.

Beberapa spesifikasi sistem (diperbarui):

  • Ubuntu 16.04 (64 bit)
  • Firefox 62.0 + build2-0ubuntu0.16.04.5 63.0 + build2-0ubuntu0.16.04.2
  • Chromium 69.0.3497.81-0ubuntu0.16.04.1 70.0.3538.77-0ubuntu0.16.04.1
  • fontconfig 2.11.94-0ubuntu1.1
  • Perangkat keras grafis: Intel SkyLake integrated graphics (i5-6200U) + Nvidia GeForce 940M
    Saat ini saya sudah nvidia-410menginstal drivernya, tetapi beralih ke profil utama Intel. Bagaimana saya bisa lebih lanjut memecahkan masalah dan memperbaiki masalah ini?

Saya membuat profil kinerja dengan Ekstensi Gecko Profiler, diinstal ke profil Firefox segar bersih di akun Ubuntu saya yang biasa. Itu dapat ditemukan di sini: https://perfht.ml/2zpTWsh - Kerangka waktu yang tidak responsif dengan penggunaan CPU 100% kira-kira harus sesuai dengan area yang disorot pada garis waktu Content Proc, dari sekitar 18an - 56an.

Saya membuat laporan bug Mozilla untuk masalah ini: https://bugzilla.mozilla.org/show_bug.cgi?id=1504461

Pembaruan penting: Rupanya laporan bug saya adalah duplikat dari https://bugzilla.mozilla.org/show_bug.cgi?id=1495900 , yang menunjukkan fontconfigsebagai pelakunya. Sepertinya memulai Chromium membuat perubahan dalam konfigurasi font entah bagaimana, yang memicu pemuatan ulang lengkap di Firefox. Ini sesuai dengan laporan profil kinerja, dan juga sejalan dengan bagaimana pembaruan sebelumnya untuk paket font memicu jenis pembekuan yang sama.

Adakah ide bagaimana saya dapat membuat ketiga (Firefox, Chromium, fontconfig) berperilaku baik satu sama lain?

Komandan Byte
sumber
Yang saya temukan di baris 353 dari ipc_channel_posix.cc adalah pernyataan benar kembali. Tentu saja Koneksi istirahat oleh rekan menjadi fatal tidak pernah menjadi pertanda baik. Sayangnya saya tidak dapat mereproduksi masalah ini. Saya berharap bisa lebih membantu.
Penatua Geek
Saya juga punya masalah sporadis dengan cpu tinggi di ubuntu, tapi saya tidak bisa mengatakan apa yang menyebabkannya, atau menyelesaikannya. Ada banyak masalah terbuka yang saya lacak terkait dengan penggunaan CPU yang tinggi - jadi, saya akan memutakhirkan, dan berharap. Saat ini, saya tidak mengalami masalah apa pun (atau jika saya melakukannya, ini adalah tab khusus; jadi, nyalakan kembali browser atau tutup tab yang menyelesaikannya). Apakah mungkin untuk meningkatkan dari 16,04 ke 18,10 (seperti, tentu saja, 16,04 dari 4/2016 dan 18,10 pada 8/2018) ...? Dan, fwiw, saya juga telah beralih ke kubuntu yang sepertinya memberi saya lebih sedikit sakit kepala. (Jika mungkin, boot dari USB & percobaan dengan keduanya.)
michael
Kadang-kadang saya menjalankan Firefox dan kemudian membuka Chrome (saya tahu itu sedikit berbeda) dan belum memperhatikan penggunaan CPU yang tinggi. Mungkin 5 lonjakan kedua dari 18% CPU ke 30% CPU di 8 CPU virtual.
WinEunuuchs2Unix

Jawaban:

17

TL; DR: Ini masalah fontconfigsebelum versi 2.13. Itu dapat diperbaiki dengan memutakhirkan paket ke 2.13 atau lebih tinggi (walaupun saya tidak dapat menemukan penyedia yang cocok). Atau, periksa semua folder terkait font Anda dan file konfigurasi di direktori home Anda dan uji apakah menghapus salah satu dari mereka menyelesaikan masalah Anda. Bagi saya, mengubah nama ~/.fontsmelakukan trik.


Setelah mengetahui tentang laporan bug https://bugzilla.mozilla.org/show_bug.cgi?id=1495900 dan https://bugzilla.mozilla.org/show_bug.cgi?id=1411338 menjadi agak jelas bahwa masalahnya harus dipecahkan. disebabkan oleh fontconfig.

Entah bagaimana ketika Chromium dimulai, itu memicu perubahan dalam basis data font (???), yang menyebabkan Firefox - jika saat ini berjalan - untuk memindai ulang sistem file untuk font, menghasilkan penggunaan CPU dan pembekuan sementara.

Rupanya memperbarui fontconfigpaket dari versi 2.11 ke 2.13 (versi yang dikirim misalnya di Ubuntu 18.10) harus memperbaiki masalah, tetapi saya tidak menemukan cara mudah untuk mendapatkan versi itu pada 16.04, tanpa memutus ketergantungan banyak paket lain yang telah saya instal.

Jadi karena masalahnya terbatas pada akun pengguna saya, saya memeriksa konfigurasi font lokal dan folder saya. Ada cukup berantakan direktori terkait font-berbeda jujur, termasuk ~/.fonts, ~/.local/share/fonts, ~/.local/share-font-manager, ~/.config/font-manager, ~/.cache/font-manager, ~/.cache/fontconfigdan beberapa file lebih config dan hal-hal font yang aplikasi-spesifik.

Saya mulai dengan menghapus (mengganti nama) ~/.fontsfolder, karena sepertinya tidak mengandung sesuatu yang berguna, dan touch ~/.fonts/Library/sebelumnya yang memicu perilaku buruk Firefox. Setelah folder itu hilang, begitu pula masalah saat meluncurkan Chromium. \Hai/

Komandan Byte
sumber
Masuk akal karena saya tidak memiliki ~/.fontsdirektori. Semua font ada dalam direktori sistem yang luas.
WinEunuuchs2Unix
Rupanya bug yang serupa atau bahkan sama dapat dipicu pada 18,04 dengan meluncurkan jendela terminal root juga. strace menunjukkan beberapa file serius i / o terkait file font. Menariknya ini bukan hanya masalah dengan firefox saja tetapi aplikasi xorg lainnya juga jadi saya kira ada masalah di dalam xorg juga. Sayangnya menghapus direktori yang dimaksud tidak membantu.
stefanct
1
Namun, peningkatan fontconfigke 2.13.0-5ubuntu3dari cosmic / 18.10 memang memecahkan masalah AFAICT. Ini adalah bug paling aneh dalam beberapa saat ... terima kasih atas petunjuknya.
stefanct
@stefanct bagaimana Anda menginstalnya tanpa merusak barang, saya mencoba memaksa fontconfig dan libfontconfig1 2.13 dan ingin menghapus seluruh DE saya, menjalankan 18.04
GM-Script-Writer-62850
@ GM-Script-Writer-62850 Saya tidak punya ingatan tentang berurusan dengan libfontconfig1khusus. Secara umum saya telah menambahkan mirror bionic ke aptdaftar dan menerapkan pinning apt untuk menghindari menginstal salah satu paketnya tanpa mengatakannya secara khusus. Lalu aku hanya digunakan apt's -tpilihan seperti: apt install fontconfig -tcosmic. Saya menggunakan jodoh sebagai DE ... mungkin tidak bekerja semudah dengan DE lain.
stefanct
3

Latar Belakang

Telah diusulkan Firefox Bug 1492360 ini: Penggunaan CPU tinggi saat membuka firefox sebelum chrome / chromium . Itu adalah duplikat Bug 1495900: Memulai Chrome membuat proses konten Firefox hang selama sekitar dua menit, karena FontConfig font rescanning (FcInitReinitialize) , adalah biang keladinya.

Tapi saya juga di Firefox:

Firefox version.png

Dan ketika saya membuka Chrome:

Chrome version.png

Saya tidak melihat kinerja apa pun mencapai CPU.

Mungkin bertentangan dengan moral Anda, tetapi mungkin Anda dapat mencoba menginstal google-chrome-stableseperti yang saya miliki. Kemudian lakukan tes lagi. Jika tidak ada lonjakan penggunaan CPU hingga 100%, maka laporan bug dapat diajukan antara Chromium dan Chrome.

Saya di Ubuntu 16.04.5 LTS. Walaupun kernel saat ini adalah 4.14.78rantai LTS saya tidak berpikir itu ada hubungannya dengan itu karena saya tidak melihat CPU hits pada kernel sebelumnya juga.

Satu-satunya waktu saya melihat semua CPU pada 100% adalah selama update-initramfs.


fontconfig verson

Dalam laporan bug terungkap:

$ 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

Dalam versi non-kereta saya (bisa jadi karena tidak ada font lokal):

$ 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

Saya di 2.11.94versi lebih awal dari 2.12versi laporan bug . Dalam meningkatkan laporan bug ke 2.13adalah solusi yang direkomendasikan tetapi OP yang disebutkan dalam komentar ini tidak mungkin. Karena itu 2.11.94 mungkin menjadi pilihan.

WinEunuuchs2Unix
sumber
Yah tidak, saya tidak bermaksud menginstal Chrome. Namun, saya mengetahui bahwa pelakunya fontconfigsekarang. Mungkin Anda memiliki font lokal yang berbeda (atau tidak sama sekali) diinstal di akun pengguna Anda. Saya menemukan solusi untuk menghapus (mengganti nama) ~/.fontsfolder, yang memperbaiki masalah ini. Tampaknya juga meningkatkan ke fontconfig> = versi 2.13 harus memperbaikinya, tetapi saya tidak dapat melakukannya pada 16.04.
Byte Commander
Ya, satu-satunya font yang saya instal adalah untuk kode batang (kode 3 dari 9) yang ttfdan digunakan dalam pengolah kata / spreadsheet. Sayangnya Anda harus menyelesaikan pertanyaan karunia Anda sendiri tetapi jika itu adalah penghiburan yang sama terjadi pada saya di masa lalu.
WinEunuuchs2Unix
Saya menambahkan downgrade fontconfigsebagai opsi untuk mencocokkan versi saya tapi itu adalah "harapan samar" yang diberikan Anda mungkin berasal dari sana. Jika Anda memiliki tautan untuk menginstal font lokal, saya akan mencoba mengonfirmasi / menolak efek dari fontconfigversi yang lebih lama .
WinEunuuchs2Unix
Versi saya fontconfigadalah 2.11.94-0ubuntu1.1juga, bahwa seseorang tidak bebas bug. Pasti kombinasi font yang diinstal, konfigurasi font khusus, dan ilmu hitam, saya kira. Periksa jawabanku. :)
Byte Commander
1

Dilihat dari log, sepertinya Firefox menggunakan IPC sinkron (komunikasi antar-proses) karena beberapa alasan. Ada beberapa flag di Firefox untuk mengaktifkan IPC yang sinkron secara eksplisit (mis: network.cookie.ipc.sync). Salah satunya mungkin diaktifkan. Anda dapat mengakses dari about: config halaman

Penundaan kemudian akan menjadi hasil dari firefox yang menunggu jawaban. Karena tidak ada beban saat Chromium selesai memulai atau tidak aktif berjalan, ada respons langsung.

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

Aswin B
sumber
Saya mengubah nilai network.cookie.ipc.synckonfigurasi ini dari false ke true dan kembali, me-restart Firefox setelah setiap perubahan, tetapi masih perilaku yang sama :( Saya masih tidak mengerti mengapa Firefox dan Chromium bahkan akan berkomunikasi di tempat pertama, mereka harus mengurus sendiri masing-masing bisnis
Byte Commander
1
Saya telah menghapus ini karena Anda menemukan alasan sebenarnya untuk tidak terkait, tetapi saya kira saya harus meninggalkan ini di sini sebagai kemungkinan penyebab?
Aswin B
0

Tidak tahu apakah saran berikut akan berfungsi atau tidak. Anda bisa mencobanya. Coba hapus kromium dan firefox sepenuhnya (simpan file .deb tentu saja) menggunakan Synaptic Package Manager. Setelah itu periksa apakah ada dependensi yang rusak. Perbaiki dengan menggunakan sinaptik (jika ada). Sekarang periksa penggunaan CPU (saya menggunakan Powertop). Akhirnya lakukan instal ulang browser yang baru.

Catatan: Hal-hal ini umumnya apa yang saya lakukan jika ada kelainan spesifik. Saya ingat menghadapi masalah yang sedikit mirip setahun yang lalu. Itu bisa diselesaikan dengan cara ini.

Hirak
sumber
Tidak, membersihkan dan menginstal ulang semua paket * * dan kromium firefox tidak mengubah apa pun.
Byte Commander
apakah widget statistik siaga dan statistik frekuensi powertop menunjukkan penggunaan 100% saat Anda meluncurkan kromium?
Hirak
Ya, ini menunjukkan sekitar 112% untuk "C0 aktif" pada setiap inti dalam statistik menganggur, dan statistik frekuensi melaporkan frekuensi maksimum (2.7GHz) dan 0% menganggur pada setiap inti. Tab ikhtisar menampilkan semua proses Firefox di bagian atas daftar, dengan waktu komputasi sekitar 600-900 ms / dtk masing-masing, tetapi tidak ada kejadian.
Byte Commander
0

Pada Ubuntu 16.04, menghapus folder kosong ~/.local/share/fontsmenyelesaikannya dalam kasus saya.

Djalal M.
sumber