Informasi atau laporan yang terkumpul akan diunggah ke sistem pelacakan bug.
Jika ada proses dalam sistem mati karena sinyal yang biasanya disebut sebagai 'crash' (pelanggaran segmentasi, kesalahan bus, pengecualian floating point, dll.), Atau misalnya aplikasi Python yang dipaket menimbulkan pengecualian yang tidak tertangkap, backend yang didukung secara otomatis dipanggil.
Ini menghasilkan laporan kerusakan awal dalam file di / var / crash / (nama file terdiri dari nama crashed executable dan id pengguna). Jika proses macet milik pengguna yang saat ini masuk, atau milik proses sistem dan pengguna adalah administrator, apport menginformasikan pengguna tentang kecelakaan dan menawarkan untuk melaporkan masalah.
Jika pengguna membiarkan kotak centang "Kirim laporan kesalahan" diaktifkan, Apport mengunggah informasi yang dikumpulkan ke sistem pelacakan bug. Setelah itu membuka halaman pengarsipan bug paket dengan judul bug default yang masuk akal dan meninggalkan sisa proses pengarsipan bug ke UI web.
Ubuntu menerima sejumlah besar laporan bug setiap hari melalui sistem pelacakan bug kami. Masing-masing harus dibaca, dinilai, dan disortir sehingga dapat diperbaiki. Di sinilah kami dapat menggunakan bantuan Anda dengan Helping With Bugs. Untuk representasi visual dari proses triase bug, lihat Diagram Alir yang bagus ini.
Setiap laporan bug adalah percakapan dengan reporter. Kontak pertama yang biasanya dimiliki reporter dengan komunitas Ubuntu adalah melalui bug triager, yang mencoba menyusun laporan bug lengkap. Sangat penting bahwa kami memberikan kesan yang baik, jadi harap sopan dan cobalah menggunakan bahasa Inggris terbaik Anda.
Mengerjakan bug yang sederhana dan tidak terganggu adalah cara yang baik untuk memulai dan mengenal prosedur triaging karena Anda harus berurusan dengan setiap aspek dari siklus hidup bug. Bagian Bug yang tidak terganggu menjelaskan di mana menemukannya.
Jenis Bug
Laporan laporan
Laporan Apport adalah bug yang dilaporkan melalui program pelaporan bug otomatis Apport. Melaporkan bug menggunakan Apport adalah cara yang disukai untuk melaporkan bug karena bug memberikan banyak informasi kepada pengembang tentang sistem yang terpengaruh. Ketika Apport digunakan, informasi tambahan lebih sedikit diperlukan, mempercepat seluruh proses.
Anda dapat mengenali bug ini dengan daftar informasi sistem yang ditambahkan dalam deskripsi mereka. Beberapa program memiliki kaitan untuk Apport, menambahkan lebih banyak informasi saat melaporkan bug. Informasi ini biasanya dapat ditemukan di lampiran.
Bug yang dikonfirmasi
Ketika bug ditandai sebagai 'Dikonfirmasi', bug tersebut belum sepenuhnya diprioritaskan. Bug ini sangat dekat dengan ditandai sebagai 'Triaged', tetapi Anda perlu memastikan itu siap untuk diperbaiki oleh pengembang.
Permintaan fitur
Jika laporan bug sebenarnya adalah permintaan fitur, ada dua kemungkinan. Jika peningkatan yang diminta kecil dan terdefinisi dengan baik dan / atau sarannya berkenaan dengan proyek upstream, Pentingnya bug harus diatur ke 'Daftar Keinginan'. Ketika laporan selesai, status harus diatur ke 'Triaged'.
Hanya anggota tim Kontrol Bug Ubuntu yang dapat melakukannya. Jika Anda bukan anggota, Anda harus bertanya kepada seseorang yang akan melakukannya untuk Anda. Rekatkan nomor bug di # ubuntu-bug dan katakan Anda pikir bug tersebut harus disetel ke 'Wishlist'. Seseorang akan memperhatikan dan mengaturnya untuk Anda, meskipun belum tentu segera.
Bagaimana cara kerjanya secara internal?
Interseksi kecelakaan
Apport menggunakan / proc / sys / kernel / core_pattern untuk secara langsung menyalurkan dump inti ke apport:
$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$
Catatan: bahwa meskipun ulimit diatur ke file inti yang dinonaktifkan (dengan menentukan ukuran file inti nol menggunakan ulimit -c 0), apport masih akan menangkap crash. Untuk mencegat crash Python itu menginstal a /etc/python*/sitecustomize.py
untuk memanggil akses pada pengecualian tidak tertangani.
Contoh
Apport bahkan dapat menangkap file inti jika PID 1 (Pemula) mati:
- Jika Upstart mendeteksi ketidakkonsistenan internal, itu menaikkan sinyal SIGABRT.
- Penangan kecelakaan pemula dipanggil pada SIGABRT.
- Pemula crash yang baru memulai proses anak.
- Proses anak pemula meningkatkan kembali sinyal yang mengakibatkan anak keluar secara tidak normal.
- Kernel mendeteksi proses anak telah keluar secara tidak normal dan memanggil apport, memipip file inti untuk memberikan input standar (karena / proc / sys / kernel / core_pattern).
- apport menulis file inti ke disk di / var / crash /.
- PID 1 menunggu anaknya berhenti (yang hanya terjadi setelah apport selesai menulis file inti).
- PID 1 keluar.
- panik kernel.
- Pada boot berikutnya, Whoopsie akan mendeteksi file kerusakan dan memprosesnya.
Backend
Untuk menjaga penundaan dan dampak CPU / IO serendah mungkin, /usr/share/apport/apport
hanya mengumpulkan data yang harus diperoleh saat proses macet masih ada: informasi dari /proc/pid
, dump inti, jalur yang dapat dieksekusi, dan nomor sinyal. Laporan ini ditulis untuk /var/crash/executable_path.uid.crash
.
Doa frontend
Di Gnome, pembaruan-notifier terus memantau jam tidak aktif /var/crash
. Setiap kali ada sesuatu yang baru, ia memanggil / usr / share / apport / apport-checkreports. Jika ada laporan baru, ia memanggil / usr / share / apport / apport-gtk, yang merupakan tampilan depan yang ditunjukkan pada tangkapan layar di atas.
Frontend kemudian mengumpulkan informasi tambahan seperti versi paket, checksum file paket, atau versi OS, dan memanggil semua kait paket yang cocok. Untuk menonaktifkan ini, Anda dapat menjalankan gsettings yang mengatur com.ubuntu.update-notifier show-apport-crashes false (sebagai pengguna desktop biasa).
Auto-retracer berbasis launchpad
Pusat data Canonical menjalankan layanan yang secara otomatis menelusuri kembali bug dengan apport. Dengan menandai bug sesuai dengan arsitektur di Launchpad, retrace akan dilakukan dan tag akan dihapus. Tag yang digunakan adalah need-i386-retrace atau need-amd64-retrace. Lihat pengumumannya.
Kait Paket Per Paket
Adalah mungkin bagi paket untuk menentukan informasi yang dikumpulkan dari sistem dan termasuk dalam laporan bug. Ini dilakukan oleh pengait akses yang terkandung dalam paket. Untuk beberapa contoh bermanfaat, lihat:
- source_xorg.py - menambahkan file log tambahan dan detail perangkat keras ke laporan bug
- usplash - mengabaikan crash di jalur kode tertentu
- source_totem.py - mengajukan pertanyaan kepada reporter dan mengumpulkan informasi berbeda berdasarkan tanggapan
di / usr / share / apport / package-hooks. Ada juga daftar paket yang menyediakan kait paspor.
Jika laporan kerusakan atau bug dikirimkan melalui apport, kait yang relevan akan dijalankan secara otomatis. Jika Anda memiliki bug yang sudah dilaporkan yang diajukan tanpa apport, dan Anda tertarik pada informasi dari hook tersebut, Anda dapat meminta reporter bug untuk menggunakan bugnumber yang mengumpulkan apport.
Gunakan sumbernya, Luke!
- Anda dapat mengunduh tarball hulu dari halaman proyek Launchpad, atau tarball sumber Ubuntu dari arsip Ubuntu.
- apport dikembangkan dengan bazaar RCS on Launchpad. Jika Anda ingin berkontribusi atau mengembangkan sistem Anda sendiri berdasarkan itu, Anda bisa mendapatkan cabang sendiri dengan bzr get lp: apport for trunk, atau debcheckout-apport untuk cabang pengemasan Ubuntu.
Rencana masa depan
Berbagai peningkatan kinerja, alat yang lebih baik untuk bekerja dengan laporan, dan integrasi lebih banyak bahasa (jejak tumpukan Mono / Python, pesan pernyataan, dll.) Lihat spesifikasi yang relevan.
Sumber: Apport , How To Triage , dan Cara mengaktifkan Apport