# Comment rapporter les bogues

Les bons rapports de bogue sont une contribution précieuse pour tout projet en développement. Mais tout comme pour écrire un bon logiciel, les bons rapports de problèmes exigent du travail. Rendez-vous compte que la plupart des développeurs sont extrêmement occupés et reçoivent un nombre colossal d'emails. Donc bien que votre retour soit crucial pour l'amélioration de MPlayer et soit très apprécié, comprenez que vous devez fournir toutes les informations que nous demandons et suivre de près les instructions de ce document.

## Rapport de sécurité lié aux bogues

Au cas où vous trouveriez un bogue exploitable, laissez-nous le temps de le corriger avant de le révéler. Vous pouvez envoyer vos alertes de sécurité à security@mplayerhq.hu. Veuillez ajouter [SECURITE] ou [CONSEILLE] dans le sujet. Soyez sûr que votre rapport contienne une analyse complète et détailée du bogue. L'envoi d'un correctif est hautement apprécié. Veuillez ne pas retarder l'envoi de votre rapport juste pour l'écriture d'une preuve que le bogue est exploitable, vous pouvez envoyer ceci dans un autre message.

## Comment réparer les bogues

Si vous pensez avoir les talents nécessaires vous êtes invité à essayer de réparer le bogue vous-même. Ou peut-être l'avez-vous déjà fait? Veuillez lire ce court document (en anglais) pour trouver comment faire inclure votre code dans MPlayer. Les gens de la liste de diffusion MPlayer-dev-eng vous assisterons si vous avez des questions.

## Comment faire des tests de regression en utilisant Subversion

Un problème qui peut survenir quelque fois est 'cela marchait avant, et plus maintenant...'. Voici une procédure étape-par-étape pour tenter d'indiquer quand exactement le problème s'est produit. Ceci n'est pas pour les utilisateurs occasionnels.

Premièrement, vous aurez besoin de récuperer l'arbre des sources de MPlayer depuis le dépot Subversion. Les instructions peuvent être trouvé au bas de cette page.

Vous aurez donc dans le repertoire mplayer/ une image de l'arbre Subversion, du coté client. Maintenant mettez à jour cette image à la date voulue:

    cd mplayer/
    svn update -r {"2004-08-23"}

Le format de date est AAAA-MM-JJ HH:MM:SS. Utiliser ce format de date vous assure que vous pourrez extraire les patches selon la date à laquelle elles ont été fusionnés au dépot, comme dans l' archive MPlayer-cvslog.

Maintenant procéder comme pour une mise-à-jour normale:

    ./configure
    make

Pour un non-informaticien qui lit ceci, la méthode la plus rapide d'arriver au point où le problème se produit est d'utiliser une recherche dichotomique — qui est, chercher la date où est survenu le problème en divisant à plusieurs reprises l'intervalle de recherche par moitié. Par exemple, si le problème se produit en 2003, commencez en milieu d'année, puis demandez-vous "Le problème est-il déjà présent à ce moment?". Si oui, revenez au premier Avril; si non, allez au premier Octobre, et ainsi de suite.

Si vous avez beaucoup d'espace libre sur le disque dur (une compilation complète des sources prend actuellement 100 MO, et environ 300-350 MO si les symboles de déboguage sont activés), copiez la plus vieille version fonctionnelle connue avant de la mettre à jour; cela sauvera du temps si vous devez y revenir. (Il est habituellement nécessaire de lancer 'make distclean' avant de recompiller une version plus récente, donc si vous ne faites pas une copie de sauvegarde de votre arbre source original, vous devrez tout recompiler dedans quand vous reviendrez à la version présente.)

Quand vous avez trouvé le jour où le problème survient, continuez la recherche en utilisant l'archive mplayer-cvslog (triée par date) et en affinant par des mises-à-jour depuis Subversion en précisant heure, minute et seconde:

    svn update -r {"2004-08-23 15:17:25"}

Cela vous permettra de trouver facilement le patch exact à l'origine du problème.

Si vous trouvez le patch qui est la cause du problème, vous avez quasiement gagné; signalez le à MPlayer Bugzilla ou souscrivez à MPlayer-users et postez-le là. Il y a une chance pour que l'auteur s'empresse de suggérer un correctif. Vous pouvez également décortiquer le patch jusqu'à ce que le bug vous saute aux yeux :-).

## Comment rapporter les bogues

Tout d'abord veuillez essayer la dernière version Subversion de MPlayer car votre bogue y est peut-être déjà réparé. Le développement évolue très rapidement, la plupart des problèmes des versions officielles sont rapportés dans les jours voir les heures qui suivent, donc n'utilisez que la version Subversion pour rapporter les bogues. Ceci est également valable pour les paquets binaires de MPlayer. Les instructions Subversion peuvent être trouvées en bas de cette page ou dans le README. Si tout cela ne vous aide pas, veuillez vous référer à la liste des bogues connus et au reste de la documentation. Si votre problème n'est pas connu ou non résolvable avec nos instructions, alors merci de rapporter le bogue.

Merci de ne pas envoyer de rapports de bogues en privé à chaque développeur. C'est un travail commun et il y a donc pas mal de gens que cela pourrait intéresser. Parfois d'autres utilisateurs ont rencontré les mêmes ennuis que vous et savent comment contourner le problème même si c'est un bogue dans le code de MPlayer.

Merci de décrire votre problème avec le plus de détails possibles. Faites un petit travail de détective pour restreindre les conditions d'occurrence du problème. Est ce que le bogue ne se montre que dans certaines situations ? Est-il spécifique à certains fichiers ou types de fichier ? Apparaît-il avec un seul codec ou est-ce indépendant du codec ? Pouvez-vous le reproduire avec tous les pilotes de sortie ? Plus vous fournissez d'information, plus grandes sont nos chances de résoudre votre problème. Merci de ne pas oublier d'inclure également les informations importantes requises plus bas, sinon nous ne pourront pas établir un diagnostic précis de votre problème.

Un guide excellent et bien écrit pour poser des questions sur les forums publiques est Comment Poser Les Questions De Manière Intelligente par Eric S. Raymond. Il y en a un autre (en anglais) appelé How to Report Bugs Effectively par Simon Tatham. Si vous suivez ces règles vous devriez pouvoir obtenir de l'aide. Mais merci de comprendre que nous suivons tous les listes de diffusion volontairement sur notre temps libre. Nous sommes très occupés et ne pouvons garantir que vous aurez une solution à votre problème ou même une réponse.

## Où rapporter les bogues

Souscrivez à la liste de diffusion mplayer-users: et envoyez votre rapport à où vous pourrez en discuter.

Si vous préférez, vous pouvez utiliser notre tout nouveau Bugzilla à la place.

La langue de cette liste est l'Anglais. Suivez les Règles de la Netiquette SVP et n'envoyez de mails en HTML sur aucune de nos listes de diffusion. Vous ne serez qu'ignoré ou banni. Si vous ne savez pas ce qu'est un mail en HTML ou pourquoi c'est mauvais, lisez ce sympatique document (en Anglais). Il explique tous les détails et a des instructions pour désactiver le HTML. Notez également que nous ne ferons pas de CC (copie conforme) individuelle et que c'est donc une bonne idée de souscrire pour recevoir votre réponse.

## Que rapporter

Vous pouvez avoir besoin d'inclure des fichiers de log, de configuration ou d'échantillon. Si certains sont très gros alors il vaut mieux les uploader sur notre serveur FTP en format compressé (gzip et bzip2 préférés) et indiquer uniquement leur chemin et nom dans le rapport de bogue. Nos listes de diffusion ont une taille de message limite de 80k, si vous avez quelque chose de plus gros vous devrez le compresser ou l'uploader.

### Information Système

- Votre distribution Linux ou système d'exploitation et version, ex.:

  - Red Hat 7.1

  - Slackware 7.0 + paquets de développement de la 7.1 ...

- version du noyau:

      uname -a

- version de la libc:

      ls -l /lib/libc[.-]*

- versions de gcc et ld :

      gcc -v
      ld -v

- version des binutils:

      as --version

- Si vous avez des problèmes avec le mode plein-écran:

  - Type de gestionnaire de fenêtre et version

- Si vous avez des problèmes avec XVIDIX:

  - profondeur de couleur de X:

        xdpyinfo | grep "depth of root"

- Si seul le GUI (ou IHM - Interface Homme Machine) est boguée:

  - version de GTK

  - version de GLIB

  - version de libpng

  - Position dans le GUI au moment où le bogue se produit

### Matériel et pilotes

- Info CPU (cela ne fonctionne que sous Linux):

      cat /proc/cpuinfo

- Fabricant et modèle de votre carte vidéo, ex.:

  - chip ASUS V3800U: nVidia TNT2 Ultra pro 32Mo SDRAM

  - Matrox G400 DH 32Mo SGRAM

- Type et version des drivers vidéo, ex.:

  - Pilote X intégré

  - nVidia 0.9.623

  - Utah-GLX CVS 2001-02-17

  - DRI avec X 4.0.3

- Type de carte son et pilote, ex.:

  - Creative SBLive! Gold avec pilote OSS de oss.creative.com

  - Creative SB16 avec pilotes noyau OSS

  - GUS PnP avec émulation OSS ALSA

- En cas de doute, joignez-y le résultat de `lspci -vv` sur les systèmes Linux.

### Problèmes de configuration

Si vous rencontrez des erreurs pendant l'éxecution de `./configure`, ou si l'auto-détection ou autre chose échoue, lisez `configure.log`. Vous pourriez y trouver la réponse, par exemple des versions multiples mélangées de la même librairie dans votre système, ou vous avez oublié d'installer les paquets de développement (ceux avec le suffixe -dev). Si vous pensez que c'est un bogue, incluez `configure.log` dans votre rapport de bogue.

### Problèmes de compilation

Veuillez inclure ces fichiers:

- config.h

- config.mak

### Problèmes de lecture

Merci d'inclure la sortie de MPlayer en verbosité niveau 1, mais rappelez-vous de ne pas tronquer la sortie en le copiant dans votre mail. Les développeurs ont besoin de tous les messages pour diagnostiquer correctement un problème. Vous pouvez rediriger la sortie dans un fichier comme ceci:

    mplayer -v options nomfichier > mplayer.log 2>&1

Si votre problème est spécifique à un ou plusieurs fichiers, alors merci d'uploader le(s) fautif(s) sur:

Uploadez aussi un petit fichier texte ayant le même nom que votre fichier mais avec une extension .txt. Décrivez le problème que vous avez avec ce fichier et incluez votre adresse e-mail ainsi que la sortie de MPlayer en verbosité niveau 1. Généralement les premiers 1-5 Mo sont suffisants pour reproduire le problème, mais pour être sûrs nous vous demandons de faire:

    dd if=votre_fichier of=petit_fichier bs=1024k count=5

Cela coupera les 5 premiers Mo de 'votre_fichier' et les sauvera dans 'petit_fichier'. Essayez alors de lire le petit fichier, et si le bogue persiste vous pouvez envoyer le petit fichier par ftp. N'envoyez jamais ces fichiers par e-mail SVP ! Envoyez-les par FTP, et postez seulement le chemin/nom des fichiers sur le serveur FTP. Si le fichier est accessible en téléchargement à partir d'Internet, alors envoyez seulement son adresse URL exacte.

### Plantages

Vous devez lancer MPlayer à l'intérieur de `gdb` et nous envoyer le résultat complet ou si vous avez un `core` dump du plantage vous pouvez extraire des informations utiles du fichier Core. Voici comment:

#### Comment conserver les informations sur un plantage reproductible

Recompilez MPlayer avec les instructions de déboguage activées:

    ./configure --enable-debug=3
    make

et ensuite lancez MPlayer à l'intérieur de gdb en utilisant:

    gdb ./mplayer

Vous êtes maintenant à l'intérieur de gdb. Tapez:

    run -v options-pour-mplayer nomfichier

et reproduisez votre plantage. Aussitôt que vous l'avez fait, gdb va vous renvoyer à la ligne de commande où vous devrez entrer

    bt
    disass $pc-32 $pc+32
    info all-registers

#### Comment extraire les informations significatives d'un core dump

Créer le fichier de commande suivant:

    bt
    disass $pc-32 $pc+32
    info all-registers

Ensuite exécutez simplement la commande:

    gdb mplayer --core=core -batch --command=fichier_de_commande > mplayer.bug

## Je sais ce que je fait...

Si vous avez créé un rapport de bogue correct en suivant les étapes ci-dessus et que vous êtes persuadé qu'il s'agit d'un bug dans MPlayer, et non un problème de compilateur ou d'un fichier endommagé, vous avez déjà lu la documentation et vous n'arrivez pas à trouver une solution, vos pilotes son sont OK, alors vous pouvez souscrire à la liste mplayer-advusers et y envoyer votre rapport pour obtenir une réponse plus intéressante et plus rapide.

Soyez prévenu que si vous posez des questions de newbie (débutant) ou des questions dont les réponses sont dans le manuel, vous serez ignoré ou insulté au lieu de recevoir une réponse appropriée. Donc ne nous insultez pas et ne vous inscrivez à -advusers que si vous savez vraiment ce que vous faites et vous sentez en mesure d'être un utilisateur avancé de MPlayer ou un développeur. Si vous correspondez à ces critères il ne devrait pas être difficile de trouver comment on s'inscrit...