web-dev-qa-db-fra.com

Que se passe-t-il après que `ubuntu-bug` a fait son travail?

Jusqu'à récemment, vous utilisiez apport-bug ou ubuntu-bug pour commencer à signaler un bogue. Le système ouvrirait alors le tableau de bord avec votre compte, téléchargerait les informations collectées et vous permettrait d'ajouter des informations supplémentaires au rapport de bogue.

Maintenant, quand je lance gksudo ubuntu-bug (par exemple avec un fichier crash- comme argument), la boîte de dialogue des bogues courants apparaît.

enter image description here

et c'est tout.

Où le rapport est-il envoyé? Certainement pas à lancer comme un rapport de bogue (bien que dans la situation concrète les gens aient été en mesure de déposer un rapport sur ce bogue).

Alors: où ce rapport est-il envoyé (et juste peut-être), comment puis-je toujours créer un rapport de bogue depuis mon système (le téléchargement des fichiers correspondants est beaucoup plus facile)

Se pourrait-il que "le système" ait décidé qu'il s'agirait d'un duplicata d'un bogue déjà existant?

14
guntbert

Techniquement, ubuntu-bug enregistre simplement le rapport d'incident localement. Un programme distinct, whoopsie, surveille les rapports consignés et les télécharge dans une base de données centrale, où ils sont automatiquement regroupés pour identifier les problèmes généraux.

Les données résultantes sont affichées sur le suivi d’erreur Ubunt :

Graph of error reports in Ubuntu

Les tendances globales sont disponibles publiquement et les détails du rapport sont disponibles pour les développeurs de confiance. Plus de détails sont disponibles sur le wiki d'Ubunt .

Par défaut, ubuntu-bug n'ouvre pas de bogues dans Launchpad pour les rapports d'incident dans les versions stables, mais vous pouvez le configurer si vous le souhaitez. Après avoir effectué cette modification, vous pouvez ouvrir un bogue pour un rapport d'incident existant en exécutant ubuntu-bug /var/crash/foo.crash.

7
ændrük

Les informations ou les rapports collectés sont téléchargés vers un système de suivi des bogues.

Si un processus du système meurt en raison d'un signal couramment appelé "blocage" (violation de segmentation, erreur de bus, exception de virgule flottante, etc.) ou e. g. une application empaquetée Python lève une exception non interceptée, le serveur dorsal est automatiquement appelé.

Il produit un premier rapport d'incident dans un fichier de/var/crash/(le nom du fichier est composé du nom de l'exécutable bloqué et de l'ID utilisateur). Si le processus bloqué appartient à l'utilisateur actuellement connecté ou s'il appartient à un processus système et que l'utilisateur est un administrateur, apport informe l'utilisateur du blocage et propose de signaler le problème.

Si l'utilisateur laisse la case "Envoyer le rapport d'erreur" activée, Apport télécharge les informations collectées dans le système de suivi des bogues. Après cela, il ouvre le bogue des packages. page de classement avec un titre de bogue par défaut raisonnable et laisse le reste du processus de classement des bogues à l'interface Web.

Ubuntu reçoit chaque jour un nombre incroyablement élevé de rapports de bogues via son système de suivi des bogues. Chacun de ceux-ci doit être lu, évalué et trié afin qu'il puisse être corrigé. C’est là que nous pourrions utiliser votre aide pour Helping With Bugs. Pour une représentation visuelle du processus de tri des bogues, voir ces organigrammes de Nice.

Chaque rapport de bogue est une conversation avec le journaliste. Le premier contact que tout journaliste a habituellement avec la communauté Ubuntu se fait via un trieur de bogues, qui tente de créer un rapport de bogue complet. Il est très important que nous donnions une bonne impression. Soyez donc poli et essayez d’utiliser votre meilleur anglais.

Travailler sur des bogues simples et non expérimentés est un bon moyen de se familiariser avec la procédure de tri car il vous faudra gérer tous les aspects du cycle de vie d'un bogue. La section Bogues non exploités explique où les trouver.

Types de bogues

Rapports d'apport

Les rapports d'appels sont des bogues signalés via le programme automatisé de rapports de bogues Apport. Signaler des bogues en utilisant Apport est le moyen préféré de signaler un bogue car il fournit aux développeurs beaucoup d'informations sur le système affecté. Lorsque Apport est utilisé, moins d'informations supplémentaires sont requises, ce qui accélère l'ensemble du processus.

Vous pouvez reconnaître ces bogues en ajoutant la liste des informations système dans leur description. Certains programmes ont des points d'ancrage pour Apport, ajoutant plus d'informations lors de la signalisation d'un bogue. Ces informations peuvent généralement être trouvées dans les pièces jointes.

Bugs confirmés

Lorsqu'un bogue est marqué comme 'Confirmé', il n'est pas encore totalement trié. Ce bogue est presque sur le point d'être marqué comme 'Triaged', mais vous devez vous assurer qu'il est prêt à être corrigé par les développeurs.

Demandes de fonctionnalités

Si le rapport de bogue est en réalité une demande de fonctionnalité, il existe deux possibilités. Si l'amélioration demandée est petite et bien définie et/ou si la suggestion concerne un projet en amont, l'option Importance du bogue doit être définie sur "Liste de souhaits". Lorsque le rapport est terminé, le statut doit être défini sur 'Triaged'.

Seuls les membres de l'équipe de contrôle des bugs Ubuntu peuvent le faire. Si vous n'êtes pas membre, vous devrez demander à quelqu'un qui le fera pour vous. Collez le numéro du bogue dans # ubuntu-bugs et dites que vous pensez que le bogue devrait être réglé sur 'Liste de souhaits'. Quelqu'un le remarquera et le fixera pour vous, bien que pas nécessairement immédiatement.

Comment ça marche en interne?

Interception d'urgence

Apport utilise/proc/sys/kernel/core_pattern pour diriger directement le fichier de vidage de mémoire vers:

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

Remarque: même si ulimit est défini sur les fichiers de base désactivés (en spécifiant une taille de fichier de base égale à zéro avec ulimit -c 0), apport sera tout de même capturer le blocage. Pour l’interception de Python, un crash s’est produit, il installe un /etc/python*/sitecustomize.py pour appeler la division sur les exceptions non gérées.

Exemple

Apport est même capable de capturer des fichiers de base si le PID 1 (Upstart) meurt:

  1. Si Upstart détecte une incohérence interne, il soulève le signal SIGABRT.
  2. Le gestionnaire de crash d'Upstart est appelé sur SIGABRT.
  3. Le gestionnaire de crash Upstart crée un processus enfant.
  4. Le processus enfant Upstart relance le signal, ce qui entraîne une sortie anormale de l'enfant.
  5. Le noyau détecte que le processus enfant s'est terminé de manière anormale et appelle 365, en canalisant le fichier principal vers l'entrée standard (en raison de/proc/sys/kernel/core_pattern).
  6. apport écrit le fichier core sur le disque dans/var/crash /.
  7. Le PID 1 attend la fin de son fils (ce qui ne se produit qu'une fois que la tâche d'écriture du fichier principal est terminée).
  8. Le PID 1 est sorti.
  9. panique du noyau.
  10. Au prochain démarrage, Whoopsie détectera le fichier d’incident et le traitera.

Backend

Afin de minimiser autant que possible le délai et l'impact CPU/IO, /usr/share/apport/apport ne collecte que les données devant être acquises tant que le processus bloqué existe toujours: informations de /proc/pid, du dump principal, de l'exécutable chemin et le numéro du signal. Le rapport est écrit dans /var/crash/executable_path.uid.crash.

Invocation frontale

Dans Gnome, update-notifier surveille inotify /var/crash. Chaque fois qu'il y a quelque chose de nouveau, il appelle/usr/share /att/rapport-check-reports. S'il y a de nouveaux rapports, il appelle/usr/share/apport/apport-gtk, l'interface utilisée dans les captures d'écran ci-dessus.

Le client collecte ensuite des informations supplémentaires telles que les versions de package, les sommes de contrôle de fichier de package ou la version du système d'exploitation, et appelle tous les hooks de package correspondants. Pour désactiver cela, vous pouvez exécuter gsettings set com.ubuntu.update-notifier show-apport-crashes false (en tant qu'utilisateur de bureau ordinaire).

Auto-retracer basé sur le tableau de bord

Le centre de données Canonical exécute un service qui retrace automatiquement les bogues avec apport. En marquant les bogues selon l’architecture de Launchpad, un retour en arrière sera effectué et la balise sera supprimée. Les étiquettes utilisées sont need-i386-retrace ou need-AMD64-retrace. Voir l'annonce.

Crochets d'apport par paquet

Il est possible pour les packages de spécifier les informations collectées à partir du système et incluses dans le rapport de bogue. Celles-ci sont effectuées par des hooks contenus dans des packages. Pour des exemples utiles, voir:

  • source_xorg.py - ajoute des fichiers journaux et des détails matériels supplémentaires aux rapports de bogues
  • usplash - ignore les plantages dans des chemins de code spécifiques
  • source_totem.py - pose des questions au journaliste et rassemble différentes informations en fonction des réponses

dans/usr/share/apport/package-hooks. Il existe également une liste de paquets fournissant des hameçons.

Si un rapport d'incident ou de bogue est soumis par le biais de la division, les hooks correspondants seront exécutés automatiquement. Si vous avez déjà signalé un bogue qui a été classé sans apport, et que les informations de ces hooks vous intéressent, vous pouvez demander au rapporteur de bogues d'utiliser le numéro de bogue de collecte-collect.

Utilisez la source, Luke!

  • Vous pouvez télécharger l'archive amont dans la page du projet Launchpad ou l'archive source Ubuntu à partir de l'archive Ubuntu.
  • apport est développé avec le RCS Bazar sur Launchpad. Si vous souhaitez y contribuer ou développer votre propre système basé sur celui-ci, vous pouvez obtenir votre propre branche avec bzr get lp: apport pour trunk, ou debcheckout -a apport pour la branche empaquetage Ubuntu.

Plans futurs

Diverses améliorations des performances, de meilleurs outils pour travailler avec les rapports et l'intégration de plusieurs langages (traces de pile Mono/Python, messages d'assertion, etc.) Voir la spécification correspondante.

Sources: Apport , Comment trier , et Comment activer Apport

3
Mitch