Apa yang terjadi setelah `ubuntu-bug` telah melakukan tugasnya?

14

Hingga beberapa waktu lalu Anda berlari apport-bugatau ubuntu-bugmulai melaporkan bug. Sistem kemudian akan membuka launchpad dengan akun Anda, mengunggah informasi yang dikumpulkan dan membiarkan Anda menambahkan lebih banyak info ke laporan bug.

Sekarang ketika saya menjalankan gksudo ubuntu-bug(misalnya dengan crashargumen -file sebagai) dialog bug umum muncul

masukkan deskripsi gambar di sini

dan itu saja.

Ke mana laporan itu dikirim? Jelas tidak untuk meluncurkan padpad sebagai laporan bug (walaupun dalam situasi konkret orang telah dapat mengajukan laporan tentang bug itu).

Jadi: ke mana laporan ini dikirim ke (dan mungkin saja) bagaimana saya masih dapat mengajukan laporan bug dari sistem saya (membuat pengunggahan file terkait jauh lebih mudah)

Mungkinkah "sistem" memutuskan bahwa ini akan menjadi duplikat dari bug yang sudah ada?

Guntbert
sumber

Jawaban:

7

Secara teknis, ubuntu-bugcukup catat laporan kerusakan secara lokal. Program terpisah whoopsie,, mengawasi laporan yang dicatat dan mengunggahnya ke database pusat, tempat laporan itu dikelompokkan secara otomatis untuk mengidentifikasi masalah menyeluruh.

Data yang dihasilkan ditampilkan pada pelacak kesalahan Ubuntu :

Grafik laporan kesalahan di Ubuntu

Tren agregat tersedia untuk umum, dan detail laporan tersedia untuk pengembang tepercaya. Rincian lebih lanjut tersedia di Wiki Ubuntu .

Secara default, ubuntu-bugtidak membuka bug di Launchpad untuk laporan kerusakan dalam rilis stabil, tetapi Anda dapat mengonfigurasinya jika Anda mau. Setelah melakukan perubahan itu, Anda dapat membuka bug untuk laporan kerusakan yang ada dengan menjalankan ubuntu-bug /var/crash/foo.crash.

ændrük
sumber
3

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.pyuntuk memanggil akses pada pengecualian tidak tertangani.

Contoh

Apport bahkan dapat menangkap file inti jika PID 1 (Pemula) mati:

  1. Jika Upstart mendeteksi ketidakkonsistenan internal, itu menaikkan sinyal SIGABRT.
  2. Penangan kecelakaan pemula dipanggil pada SIGABRT.
  3. Pemula crash yang baru memulai proses anak.
  4. Proses anak pemula meningkatkan kembali sinyal yang mengakibatkan anak keluar secara tidak normal.
  5. 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).
  6. apport menulis file inti ke disk di / var / crash /.
  7. PID 1 menunggu anaknya berhenti (yang hanya terjadi setelah apport selesai menulis file inti).
  8. PID 1 keluar.
  9. panik kernel.
  10. Pada boot berikutnya, Whoopsie akan mendeteksi file kerusakan dan memprosesnya.

Backend

Untuk menjaga penundaan dan dampak CPU / IO serendah mungkin, /usr/share/apport/apporthanya 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

Mitch
sumber
Ini adalah proses yang biasa saya lakukan - tetapi sekarang kalimat terakhir sepertinya tidak berlaku lagi - tidak ada UI web yang terbuka. Saya mengubah pertanyaan saya dengan ide yang jawaban Anda bawa ke pikiran saya.
guntbert
Saya pikir UI Web bukan lokal (bukan di sisi pengguna), tetapi online, tapi saya tidak yakin.
Mitch
Sumber ini terakhir diperbarui pada November 2012. Informasi ini mungkin sudah usang ..
guntbert
Saya melihat itu, tapi saya pikir karena tidak ada yang berubah, saya tidak perlu memperbarui, saya kira. Sekarang mungkin ketika 13.10 keluar, akan ada perubahan karena ini akan multi-perangkat. Apport terbaru adalah 2,61 , bertanggal 10 Oktober 2012.
Mitch