Cosa succede dopo che `ubuntu-bug` ha fatto la sua cosa?


14

Fino a qualche tempo fa hai eseguito apport-bugo ubuntu-bugper iniziare a segnalare un bug. Il sistema aprirà quindi launchpad con il tuo account, caricherà le informazioni raccolte e ti consentirà di aggiungere ulteriori informazioni alla segnalazione dei bug.

Ora quando corro gksudo ubuntu-bug(ad esempio con un crashfile come argomento) appare la finestra di dialogo dei bug comuni

inserisci qui la descrizione dell'immagine

e questo è tutto.

Dove viene inviato il rapporto? Sicuramente non avviare launchpad come segnalazione di bug (anche se nella situazione concreta le persone sono state in grado di presentare una segnalazione su quel bug).

Quindi: dove viene inviato questo rapporto (e forse solo) come posso ancora inviare una segnalazione di bug dal mio sistema (rende molto più semplice il caricamento dei file pertinenti)

Potrebbe essere che "il sistema" abbia deciso che questo sarebbe un duplicato di un bug già esistente?

Risposte:


7

Tecnicamente, ubuntu-bugregistra semplicemente il rapporto di arresto locale. Un programma separato, controlla i whoopsierapporti registrati e li carica in un database centrale, dove vengono automaticamente raggruppati per identificare i problemi generali.

I dati risultanti vengono visualizzati sul tracker errori di Ubuntu :

Grafico delle segnalazioni di errori in Ubuntu

Le tendenze aggregate sono disponibili pubblicamente e i dettagli dei report sono disponibili per sviluppatori fidati. Maggiori dettagli sono disponibili sul Wiki di Ubuntu .

Per impostazione predefinita, ubuntu-bugnon apre i bug su Launchpad per i report sugli arresti anomali nelle versioni stabili, ma è possibile configurarlo su se lo si desidera. Dopo aver apportato tale modifica, è possibile aprire un bug per un rapporto sugli arresti anomali esistente eseguendo ubuntu-bug /var/crash/foo.crash.


3

Le informazioni o il report raccolti vengono caricati su un sistema di tracciamento dei bug.

Se un processo nel sistema si interrompe a causa di un segnale che viene comunemente definito "crash" (violazione della segmentazione, errore del bus, eccezione in virgola mobile, ecc.) O, ad esempio, un'applicazione Python in pacchetto genera un'eccezione non rilevata, il backend apportato viene richiamato automaticamente.

Produce un rapporto iniziale di crash in un file in / var / crash / (il nome del file è composto dal nome dell'eseguibile arrestato e dall'ID utente). Se il processo in crash appartiene all'utente attualmente connesso o appartiene a un processo di sistema e l'utente è un amministratore, apport informa l'utente in merito all'arresto e si offre di segnalare il problema.

Se l'utente lascia abilitata la casella di controllo "Invia segnalazione errori", Apport carica le informazioni raccolte sul sistema di tracciamento dei bug. Dopodiché apre la pagina di archiviazione dei bug dei pacchetti con un ragionevole titolo di errore predefinito e lascia il resto del processo di archiviazione degli errori nell'interfaccia utente web.

Ubuntu riceve un numero incredibilmente elevato di segnalazioni di bug ogni giorno attraverso il nostro sistema di tracciamento dei bug. Ognuno di questi deve essere letto, valutato e ordinato in modo che possa essere risolto. Qui è dove potremmo usare la tua assistenza con Helping With Bugs. Per una rappresentazione visiva del processo di triage dei bug, vedere questi simpatici diagrammi di flusso.

Ogni segnalazione di bug è una conversazione con il reporter. Il primo contatto che un giornalista di solito ha con la comunità di Ubuntu è tramite un triager bug, che cerca di mettere insieme una segnalazione bug completa. È molto importante dare una buona impressione, quindi sii educato e cerca di usare il tuo miglior inglese.

Lavorare su bug semplici e senza alterazioni è un buon modo per iniziare e familiarizzare con la procedura di valutazione poiché dovrai affrontare ogni aspetto del ciclo di vita di un bug. La sezione Bug non modificati spiega dove trovarli.

Tipi di bug

Rapporti di apport

I rapporti sulle app sono bug segnalati tramite il programma di segnalazione automatica dei bug Apport. La segnalazione di bug tramite Apport è il modo preferito di segnalare un bug poiché fornisce agli sviluppatori molte informazioni sul sistema interessato. Quando si utilizza Apport, sono necessarie meno informazioni aggiuntive, accelerando l'intero processo.

È possibile riconoscere questi bug dall'elenco aggiunto di informazioni di sistema nella loro descrizione. Alcuni programmi dispongono di hook per Apport, aggiungendo ulteriori informazioni quando si segnala un bug. Queste informazioni si trovano di solito negli allegati.

Bug confermati

Quando un bug è contrassegnato come "Confermato" non è stato ancora completamente verificato. Questo bug è molto vicino all'essere contrassegnato come "Triaged", ma è necessario assicurarsi che sia pronto per essere risolto dagli sviluppatori.

Richieste di funzionalità

Se la segnalazione di bug è in realtà una richiesta di funzionalità, ci sono due possibilità. Se il miglioramento richiesto è piccolo e ben definito e / o il suggerimento riguarda un progetto a monte, L'importanza del bug dovrebbe essere impostata su "Lista desideri". Quando il rapporto è completo, lo stato deve essere impostato su "Triaged".

Solo i membri del team Ubuntu Bug Control possono farlo. Se non sei un membro dovrai chiedere a qualcuno che lo farà per te. Incollare il numero del bug in # ubuntu-bugs e dire che si pensa che il bug debba essere impostato su 'Wishlist'. Qualcuno lo noterà e lo imposterà per te, anche se non necessariamente immediatamente.

Come funziona internamente?

Intercettazione di crash

Apport utilizza / proc / sys / kernel / core_pattern per reindirizzare direttamente il dump del core in apport:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$ 

Nota: anche se ulimit è impostato su file core disabilitati (specificando una dimensione del file core pari a zero usando ulimit -c 0), apport acquisirà comunque l'arresto anomalo. Per intercettare gli arresti anomali di Python, installa un /etc/python*/sitecustomize.pyper chiamare apport su eccezioni non gestite.

Esempio

Apport è anche in grado di acquisire file core se PID 1 (Upstart) muore:

  1. Se Upstart rileva un'incoerenza interna, genera il segnale SIGABRT.
  2. Il gestore di crash Upstart viene chiamato su SIGABRT.
  3. Il gestore di crash di avvio avvia un processo figlio.
  4. Il processo figlio Upstart genera nuovamente il segnale che provoca l'uscita anomala del bambino.
  5. Il kernel rileva che il processo figlio è uscito in modo anomalo e chiama apport, eseguendo il piping del file core per apporre l'input standard (a causa di / proc / sys / kernel / core_pattern).
  6. apport scrive il file core su disco in / var / crash /.
  7. PID 1 attende che il suo figlio termini (cosa che succede solo quando apport ha finito di scrivere il file principale).
  8. Il PID 1 esce.
  9. panico del kernel.
  10. Al successivo avvio, Whoopsie rileverà il file di arresto e lo elaborerà.

backend

Al fine di mantenere il ritardo e l'impatto CPU / IO il più basso possibile, /usr/share/apport/apportraccoglie solo i dati che devono essere acquisiti mentre esiste ancora il processo bloccato: informazioni da /proc/pid, core dump, percorso eseguibile e numero del segnale. Il rapporto è scritto in /var/crash/executable_path.uid.crash.

Invocazione di frontend

In Gnome, update-notifier mantiene attivo un controllo inotify /var/crash. Ogni volta che c'è qualcosa di nuovo, chiama / usr / share / apport / apport-checkreports. Se ci sono nuovi report, chiama / usr / share / apport / apport-gtk, che è il frontend mostrato negli screenshot sopra.

Il frontend quindi raccoglie informazioni aggiuntive come versioni del pacchetto, checksum dei file del pacchetto o versione del sistema operativo e chiama tutti gli hook del pacchetto corrispondenti. Per disabilitarlo, puoi eseguire gsettings set com.ubuntu.update-notifier show-apport-crashes false (come il tuo normale utente desktop).

Auto-retracer basato su Launchpad

Il data center Canonical gestisce un servizio che ripercorre automaticamente i bug con apport. Contrassegnando i bug in base all'architettura in Launchpad, verrà eseguita una traccia e il tag verrà rimosso. I tag utilizzati sono need-i386-retrace o need-amd64-retrace. Vedi l'annuncio.

Ganci Apport per confezione

È possibile per i pacchetti specificare le informazioni raccolte dal sistema e incluse nella segnalazione di bug. Questi vengono eseguiti da hook aggiunti contenuti nei pacchetti. Per alcuni esempi utili vedi:

  • source_xorg.py: aggiunge ulteriori file di registro e dettagli hardware alle segnalazioni di bug
  • usplash: ignora gli arresti anomali in percorsi di codice specifici
  • source_totem.py - pone domande al giornalista e raccoglie informazioni diverse in base alle risposte

in / usr / share / apport / package-hooks. C'è anche un elenco di pacchetti che forniscono hook utili.

Se una segnalazione di arresto anomalo o bug viene inoltrata tramite apport, i relativi hook verranno eseguiti automaticamente. Se hai già segnalato un bug che è stato archiviato senza apportato e sei interessato alle informazioni di questi hook, puoi chiedere al reporter di bug di utilizzare il valore aggiunto raccogli.

Usa la fonte, Luke!

  • È possibile scaricare il tarball upstream dalla pagina del progetto Launchpad o il tarball sorgente Ubuntu dall'archivio Ubuntu.
  • apport è sviluppato con il bazar RCS su Launchpad. Se vuoi contribuire ad esso o sviluppare il tuo sistema basato su di esso, puoi ottenere il tuo ramo con bzr get lp: apport for trunk, o debcheckout -a apportato per il ramo di packaging di Ubuntu.

Progetti futuri

Vari miglioramenti delle prestazioni, strumenti migliori per lavorare con i report e integrazione di più lingue (tracce dello stack Mono / Python, messaggi di asserzione, ecc.) Vedere le specifiche pertinenti.

Fonti: Apport , Come triage e Come abilitare Apport


Questo è il processo a cui sono abituato - ma ora l'ultima frase sembra non essere più applicabile - nessuna interfaccia utente web si apre. Ho modificato la mia domanda con un'idea che mi è venuta in mente la tua risposta.
Guntbert,

Penso che l'interfaccia utente Web non sia locale (non lato utente), ma online, ma non ne sono sicuro.
Mitch

Questa fonte è stata aggiornata l'ultima volta nel novembre 2012. Le informazioni potrebbero essere obsolete ..
Guntbert,

L'ho visto, ma penso che dal momento che nulla è cambiato, credo che non sia stato necessario aggiornare. Ora forse quando uscirà il 13.10, ci saranno cambiamenti poiché sarà multi dispositivo. L'ultima apport è 2.61 , datata 10 ottobre 2012.
Mitch
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.