Windows chromium-browser membangun stacktrace dan kesalahan fatal anonim saat runtime

1

Baru-baru ini, saya mulai meluangkan waktu dan upaya untuk memahami proyek browser kromium. Tujuan saya adalah untuk akhirnya dapat berkontribusi sebagai pengembang, jadi saya akhirnya mencari cara mendapatkannya dan membangunnya secara lokal. Saya menghadapi beberapa masalah saat menjalankannya dan belum dapat menemukan penjelasan apa pun.

Semoga itu akan membantu orang lain yang berada dalam situasi yang sama. Setelah mencari sedikit di forum, saya tidak menemukan sesuatu yang serupa dan ingin tahu apakah ini adalah sesuatu yang saya lewatkan.

Saya mencoba menjalankan chromium-browser pada Windows 10 Home Edition. Konfigurasi saya saat ini adalah i5-2500k / 8gb DDR3 dan ruang kerja saya berada pada hard drive sampai saya mendapatkan SSD yang lebih besar (Spesifikasi yang disarankan menyarankan 16-32 GB RAM dan SSD untuk memungkinkannya membangun dan menjalankan lebih baik. menjadi bagian dari masalah?).

Build kromium saya saat ini adalah: Versi 54.0.2808.0 (64-bit)

Untuk mengambil dan membangun proyek, saya telah mengikuti instruksi tentang cara mendapatkan kode.

Apa yang saya lakukan adalah:

  • Mengekstraksi versi windows dari depot-tools ke dalam ruang kerja saya
  • Mengambil repositori dengan fetch chromiumdangclient runhooks
  • Dibangun dengan cd src, gn gen out/Defaultdanninja -C out/Debug

Proses build melakukan tugasnya dan tidak ada kesalahan yang muncul di konsol. Namun, ketika saya meluncurkan browser, saya mendapatkan banyak kesalahan yang tampaknya terkait dengan stacktrace. Kesalahan itu bukan modal dan selama saya tidak menutupnya, chrome terus merespons dan halaman ditampilkan seperti yang diharapkan jadi ini bukan masalah besar untuk saat ini:

Kesalahan StackTrace

Tetapi, jika saya melakukan pemuatan berat (mis.: Memuat umpan berita facebook), sepertinya hang dan tidak merespon dengan baik dari titik ini (mis: memuat tanpa akhir, peristiwa mouse tidak berfungsi di dalam tab). Itu juga dapat direproduksi di bagian saya dengan membuka https://www.google.ca dan mengklik kanan di mana saja di halaman.

Untuk mencoba mempercepat beberapa hal, saya telah menjalankan skrip untuk mengubah nama setiap file pdb sehingga mereka tidak melampirkan ke proses. Ini sangat meningkatkan kecepatan, tetapi masih ada kesalahan. Kesalahan StackTrace menjadi ini: Kesalahan saat tidak ada PDB

Adapun masalah menggantung, sekarang akan menampilkan kotak modal kosong yang menunjukkan kesalahan (deskripsi tidak terlalu baik tentang apa itu). Yang ini modal dan sekali ditutup, chrome berhenti bekerja seperti yang dimaksudkan. Apa yang terjadi adalah mouse over events tidak muncul, dan halaman tidak akan pernah selesai memuat ketika memuat ulang. Kesalahan kosong

Saya menyadari bahwa versi terbaru terkadang tidak stabil, tetapi saya berupaya menjadikannya proyek yang menyenangkan untuk dikerjakan. Adakah sesuatu yang saya lakukan salah di sini atau langkah-langkah yang mungkin saya lewatkan? Apakah ada orang di sini yang menemukan masalah yang sama?

Terima kasih banyak, bantuan apa pun sangat dihargai!

Frederik

Pembaruan - 2016/07/28:

Menggali kode itu sendiri, saya menemukan bahwa kesalahan pertama disebabkan oleh ::FreeLibrary (in module_list.cc)tidak dapat dengan benar membebaskan HMODULE. Maaf karena meletakkan kode di sini, jika ini dapat membantu saya lebih suka membiarkannya di sini.

Investigasi saat ini: buat versi baru yang menggunakan ::UnMapViewOfFileketika ::FreeLibrarygagal untuk melihat apakah itu melewati kesalahan pertama.

Untuk kesalahan kedua, saya masih tidak tahu apa yang sedang terjadi. Pergi untuk melanjutkan penyelidikan, berharap menemukan lebih banyak detail potensial.

Silakan meminta informasi apa pun yang dapat membantu menyelesaikan masalah.

Pembaruan 2 - 2016/07/28:

Saya telah mengajukan pertanyaan yang berbeda, lebih berorientasi pada pemrograman di StackOverflow, jika dapat membantu: Browser Chromium membuat kesalahan fatal di module_list.cc: Periksa Gagal

Pembaruan 3 - 2016/07/29

Saya akhirnya dapat sesuatu !! Apa yang dilakukan adalah mengkonfigurasi build dengan konfigurasi ini di args.gn:

> gn args out/Default

is_debug = false
enable_nacl = false
symbol_level = 0
remove_webcore_debug_symbols = true

Konfigurasi ini tidak layak untuk debugging, tetapi memiliki konfigurasi yang berfungsi adalah langkah besar ke depan. Sangat bahagia sekarang !! Hipotesis saya saat ini adalah bahwa ia harus melakukan sesuatu dengan flag debug. Mungkinkah panggilan fungsi internal mengalami kesulitan mengakses nama modul yang tepat dalam mode debug?

Pembaruan 4 - 2016/08/13

Setelah build debug baru, saya perhatikan bahwa beberapa DLL debugger Kit Windows tidak disalin dalam direktori build. Kali ini, proses penautan gagal api-ms-win-crt-math-l1-1-0.dll. Saya kemudian menyalin semua dari mereka berharap itu akan menyelesaikan semua masalah. Pada percobaan pertama, kesalahan tidak muncul, tetapi perilaku yang sama terjadi ketika saya melakukan klik kanan pada Google Homepage (mekanisme penelusuran rusak secara diam-diam). Setelah menutup dan membukanya kembali, kesalahan yang sama kembali.

Adakah yang memiliki ide untuk menyelesaikan masalah tersebut atau prosedur yang berbeda dari yang ada di proyek chromium?

Frederik.L
sumber
Memiliki jejak stack sebagai gambar saja tidak membantu. Bisakah Anda menempatkan satu di Pastebin setidaknya, jika Anda tidak merasa nyaman memasukkannya di dalam pertanyaan sebagai teks?
tripleee
@ tripleee Saya akan melakukan yang terbaik untuk mengambil atau mem-pipe kesalahan minggu depan untuk dapat secara efisien menyalin / menempelkannya.
Frederik.L

Jawaban:

3

Saya ingin meminta Anda untuk mengatur Windows Anda , lingkungan untuk Visual Studio, dan mendapatkan compchain toolchain dengan benar. Silakan ikuti langkah-langkah di tautan di bawah ini, dan coba semuanya dengan versi terbaru termasuk pembaruan. Silakan temukan tautan di sini: Instruksi Pembuatan Windows

Untuk referensi Anda, temukan snapshot build Chromium di sini: Snapshots of Chromium

Beri tahu saya jika ini sedikit membantu Anda. Terima kasih.

Animesh Patra
sumber
Saya mengecek konfigurasi. Satu-satunya hal yang saya miliki berbeda adalah bahwa saya benar-benar memiliki Visual Studio 2015 Pembaruan 3 bukan Pembaruan 2. Mungkinkah yang buruk dan layak menurunkan VS dan membangun kromium dari awal? Dibutuhkan sedikit waktu untuk membangun kembali semuanya, jadi saya mencoba mengambil tebakan yang cerdas :) Adapun snapshot, terima kasih, saya dapat menguji dengan 408050 terbaru dan dapat menjalankannya tanpa kesalahan yang saya miliki dengan bangunan saya sendiri. Jadi mungkin ini salah saya.
Frederik.L
Ya, saya bisa memahami rasa sakit memulai lagi dari awal. Tetapi Anda harus memahami bahwa konfigurasi Anda saat ini juga tidak berfungsi dengan baik. Jadi mengapa tidak mencoba semuanya selagi bisa? Siapa yang tahu kali ini Anda bisa menemukan sesuatu yang jauh lebih menarik yang layak di mulai?
Animesh Patra
Saya akan kembali ke VS 2015 Pembaruan 2 dan menjalankan build bersih pada malam hari untuk melihat apakah itu membantu dan akan memberikan umpan balik ketika itu selesai. Terima kasih atas saran Anda, ini banyak membantu saya! Saya memang menemukan konfigurasi baru yang membantu setiap kali saya memulai dari awal. Semoga langkah-langkahnya lebih aman sekarang karena saya membungkus proyek di dalam kerangka Node.js.
Frederik.L
Terima kasih atas kata-kata baiknya. Saya harap kali ini Anda berhasil. Semoga berhasil.
Animesh Patra
1
Hei, ada yang berfungsi! (lihat pembaruan terakhir saya). Satu-satunya yang tersisa adalah menemukan mengapa ini bekerja dalam mode rilis tetapi gagal dalam mode debug. Kami semakin dekat! Saya akan dapat melanjutkan pengujian dari Senin berikutnya (2016-07-30) karena saya memiliki ujian besok dan jauh dari komputer sampai saat itu. Saya masih dapat menjawab pertanyaan tentang apa konfigurasi build saya.
Frederik.L