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.
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?
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 :
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
.
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:
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:
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!
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