# Hogyan jelentsd a hibákat

A jó hiba jelentések nagyon értékes hozzájárulások bármilyen szoftver fejlesztéséhez. De, akárcsak jó programot írni, jó probléma jelentést készíteni is némi munkába kerül. Kérlek vedd figyelembe, hogy a fejlesztők többsége roppant elfoglalt és valami hihetetlen mennyiségű levelet kap. Tehát miközben a visszajelzések kritikus és nagyon megbecsült az MPlayer fejlődése szempontjából, kérlek értsd meg, hogy minden általunk kért információt meg kell adnod és követned kell az ebben a dokumentumban leírt lépéseket.

## Biztonsági hibák jelentése

Ha egy kihasználható hibát találsz és a helyesen akarsz cselekedni, vagyis előbb a mi tudomásunkra akarod hozni, mielőtt publikálnád, szívesen vesszük a biztonsági figyelmeztetésedet a security@mplayerhq.hu címen. Kérjük írd bele a tárgy mezőbe a [SECURITY] vagy [ADVISORY] szót. Figyelj rá, hogy a jelentésed a hiba teljes és részletes analízisét tartalmazza. Nagyon hálásak leszünk, ha javítást is küldesz. Kérjük ne késlekedj a jelentéseddel egy proof-of-concept exploit írása miatt, azt később is elküldheted egy másik levélben.

## Hogyan javíts hibákat

Ha úgy érzed, hogy képes vagy rá, bátran állj neki és javítsd ki a hibát magad. Vagy talán már meg is tetted? Kérlek olvasd el ezt a rövid dokumentumot, hogy megtudd, hogyan kerülhet be a kódod az MPlayerbe. Az MPlayer-dev-eng levelezési listán lévő emberkék segítenek neked, ha kérdésed van.

## Hogyan tesztelj a Subversion segítségével

Egy néha előforduló probléma, hogy "régen még működött, de most már nem...". Következzék hát egy lépésenkénti leírás, mely segít a probléma megtalálásában. Ez nem az átlagos felhasználóknak szól.

Először is, be kell szerezned az MPlayer forrás fáját a Subversionből. Az utasításokat megtalálod a letöltési oldal Subversion részében.

Ezután lesz az mplayer/ könyvtárban a Subversion fáról egy pillanatképed, a kliens oldalon. Ezután frissítsd ezt a kívánt dátumúra:

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

A dátum formátum YYYY-MM-DD HH:MM:SS. Ezen dátum formátum használata biztosítja, hogy benne legyen minden olyan javítás, ami az adott dátumig commit-olva lett és bekerült az MPlayer-cvslog archívumába.

Majd folytasd, mint egy normális frissítést:

    ./configure
    make

Ha olyan olvassa ezt, aki nem programozó, annak gyorsabb megkeresni a probléma forrását bináris keresés használatával — ekkor a hiba helyét a keresési intervallum ismételt felezéseivel határozza meg. Például a probléma előfordult 2003 közepén, akkor kérdezd meg, hogy "Már ott volt a hiba?". Ha igen, akkor menj vissza április elsejére; ha nem, menj október elsejére, és így tovább.

Ha nagyon sok hely van a merevlemezeden (egy teljes fordítás jelenleg 100 MB és 300-350 MB körül van a hibakereső szimbólumokkal), másold át a legrégebbi tudvalevőleg működő verziót, mielőtt frissítenél; ezzel időt spórolsz, ha vissza kell lépned. (Általában le kell futtatni a 'make distclean'-t egy régi verzió újrafordítása előtt, így ha nem készítesz mentést az eredeti forrás fádról, újra kell fordítanod mindent, ha visszajössz a jelenbe.) Alternatívaként használhatod a ccache-t a fordítás felgyorsítására.

Ha megvan a nap, amikor a probléma megjelent, folytasd a keresést az mplayer-cvslog archívum segítségével (dátum szerint rendezve) és egy sokkal precízebb svn update-tel, melybe órát, percet és másodpercet is írsz:

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

Így könnyen megtalálod azt a javítást, ami okozta.

Ha megvan a javítás, ami a problémát okozta, majdnem győztél is; jelentsd az MPlayer Bugzilla-n vagy iratkozz fel az MPlayer-users listára és küldd el oda. Valószínűleg a szerző jelentkezni fog javítási ötlettel. Addig azonban a javításra is gyanakodva tekint, amíg nem tiszta, hogy hol is van a hiba :-).

## Hogyan jelentsd a hibákat

Mindenek előtt kérlek, hogy mindig próbáld ki az MPlayer legújabb Subversion verzióját, hátha az általad felfedezett hibát már kijavították benne. A fejlesztés borzasztó gyorsan halad, a legtöbb, hivatalos kiadásban meglévő problémát napokon vagy akár órákon belül jelentik, így csak a Subversion felhasználásával küldj hibajelentést. Ebbe beleértendőek az MPlayer bináris csomagjai is. A Subversion utasításokat megtalálod ennek az oldalnak az alján vagy a README fájlban. Ha ez sem segít, olvasd el a dokumentáció többi részét. Ha problémád még nem ismert vagy nem oldódott meg a leírásunk által, akkor kérjük jelentsd.

Kérlek ne küljd hibajelentést személyesen egy fejlesztőnek. Ez csapatmunka és így számos embert érdekelhet. Néha más felhasználók is belefutnak a te problémáidba, és esetleg tudják, hogy hogyan lehet megkerülni, még akkor is, ha hiba van az MPlayer kódjában.

Kérlek olyan részletesen írd le a problémádat, amilyen részletesen csak lehet. Végezz egy kis felderítő munkát, szűkítsd le azon körülmények körét, amelyek között a hiba előfordul. A hiba csak adott szituációban jön elő? Bizonyos fájlokra vagy fájl típusokra vonatkozóan? Csak egy codec esetén vagy független a használt codec-től? Mindegyik kimeneti vezérlővel elő tudod hozni? Minél több információt adsz meg, annál nagyobb az esély a hiba kijavítására. Kérlek ne felejtsd el mellékelni azon értékes információkat, amit lejjebb írunk, különben képtelenek vagyunk megfelelően megkeresni a problémádat.

Egy kitűnő és jól megírt útmutató kérdések publikus fórumokban történő feltevéséhez a How To Ask Questions The Smart Way (magyarul) Eric S. Raymond-tól. Van egy másik is, a How to Report Bugs Effectively című Simon Tatham-tól. Ha követed ezeket a leírásokat, kapsz segítséget. De kérlek értsd meg, hogy a levelezési listákat önként, a szabad időnkben nézzük. Van más dolgunk is, és nem tudjuk garantálni, hogy kapsz megoldást vagy egyáltalán választ a problémádra.

## Hol kell jelezni a hibákat

Iratkozz fel az MPlayer-users levelezési listára: (vagy a magyar nyelvűre itt: ) és küldd el a hibajelentéseidet a (illetve ) címre, ahol meg lehet vitatni.

Ha inkább azt szeretnéd, használhatod a vadi új Bugzillánkat is.

Ezen lista nyelve az angol (a -felhasználóké magyar). Kövesd a szabványos Netiquette Irányelveket és ne küldj HTML levelet egyik levelezési listánkra se. Ha nem így teszel, akkor vagy egyszerűen figyelmen kívül hagynak vagy kitiltanak. Ha nem tudod mi az a HTML levél vagy hogy miért rossz az, olvasd el ezt a frankó leírást. Mindent részletesen megmagyaráz és tanácsokat ad a HTML kikapcsolásához. Szintén tartsd észben, hogy nem CC-zünk (carbon-copy) egyéneknek, így jól teszed, ha feliratkozol, hogy megkapd te is a választ.

## Mit jelents

A hibajelentésedhez csatolnod kell a log-ot, konfigurációs vagy minta fájlokat. Ha ezek közül valamelyik nagy, jobb ha feltöltöd az HTTP szerverünkre tömörített formátumban (gzip és bzip2 a javasolt) és csak az elérési utat és a fájl nevet írod bele a hiba jelentésedbe. A levelezési listáinkon az üzenet mérete maximum 80k lehet, ha ennél nagyobb fájlod van, tömörítened kell, vagy feltöltened.

### Rendszer információk

- A Linux disztribúciód vagy operációs rendszered verziója, pl.:

  - Red Hat 7.1

  - Slackware 7.0 + 7.1-es fejlesztői csomagjai ...

- kernel verziója:

      uname -a

- libc verziója:

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

- gcc és ld verziója:

      gcc -v
      ld -v

- binutils verziója:

      as --version

- Ha a teljes képernyős lejátszással van gondod:

  - Ablakezelő tíusa és verziója

- Ha az XVIDIX-szel van problémád:

  - X szín mélység:

        xdpyinfo | grep "depth of root"

- Ha csak a GUI a hibás:

  - GTK verziója

  - GLIB verziója

  - GUI szituáció, ahol a hiba előjön

### Hardver és vezérlők

- CPU infó (csak Linuxon működik):

      cat /proc/cpuinfo

- Videó kártya gyártója és modellje, pl.:

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

  - Matrox G400 DH 32MB SGRAM

- Videó vezérlő típusa & verziója, pl.:

  - X built-in driver

  - nVidia 0.9.623

  - Utah-GLX CVS 2001-02-17

  - DRI from X 4.0.3

- Hangkártya típusa & vezérlője, pl.:

  - Creative SBLive! Gold with OSS driver from oss.creative.com

  - Creative SB16 with kernel OSS drivers

  - GUS PnP with ALSA OSS emulation

- Ha nem vagy biztos benne, csatold az `lspci -vv` kimenetét (Linux alatt).

### Konfigurációs problémák

Ha a `./configure` futtatása közben fordult elő valami hiba, vagy valaminek az automatikus detektálása nem sikerült, olvasd el a `config.log` fájlt. Ott megtalálod a választ, például ugyanazon függvénykönyvtár több verziója elszórva a rendszerben, vagy elfelejtetted telepíteni a fejlesztői csomagokat (amiknek -dev utótagjuk van). Ha úgy hiszed, hogy hibát találtál, csatold a `config.log` fájlt a hibajelentésedhez.

### Fordítási problémák

Kérlek csatold a következő fájlokat:

- config.h

- config.mak

### Lejátszási problémák

Írd meg az MPlayer kimenetét az 1. szintű beszédességgel, de figyelj rá, hogy ne szerkeszd át a kimenetet, amikor beilleszted a levélbe. A fejlesztőknek szükségük van azokra az üzenetekre, hogy pontosan diagnosztizálják a problémát. A kimenetet átirányíthatod fájlba így:

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

Ha a probléma egy vagy több fájl esetén specifikus, kérlek töltsd fel ide:

Tölts fel egy apró, a fájloddal megegyező nevű, de .txt kiterjesztésű szöveges fájlt is. Írd le a problémát, ami az adott fájllal jelentkezik és írd bele az e-mail címed valamint az MPlayer kimenetét 1. szintű beszédességgel. Általában a fájl első 1-5 MB-ja elég a hiba reprodukálásához, de a biztonság kedvéért:

    dd if=yourfile of=smallfile bs=1024k count=5

Ez az első 5 megabájtot a 'your-file'-ból átírja a 'small-file'-ba. Ezután próbáld ki ezt a kicsi fájlt is és ha a hiba még mindig jelentkezik, akkor ez elegendő lesz nekünk. Kérlek soha ne küldj fájlokat mail-en keresztül! Töltsd fel és csak az FTP szerveren élő elérési utat/fájlnevet írd meg. Ha a fájl elérhető a neten, akkor a pontos URL beküldése is elegendő.

### Összeomlások

Az MPlayert a `gdb`-n belül kell futtatnod, és elküldeni a teljes kimenetet vagy ha van `core` dump-od az összeomlásról, abból is kiszedheted a hasznos információkat. Íme így:

#### Hogyan tárolhatóak a reprodukálható összeomlás információi

Fordítsd újra az MPlayert a debug-oló kód engedélyezésével:

    ./configure --enable-debug=3
    make

majd futtasd az MPlayert a gdb-ben az alábbi paranccsal:

    gdb ./mplayer

Most a gdb-ben vagy. Írd be:

    run -v kapcsolok-az-mplayernek fajlnev

és reprodukáld az összeomlást. Amint megtörtént, a gdb visszaadja a parancssort, ahol be kell írnod:

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

#### Hogyan szedd ki a hasznos információkat a core dump-ból

Hozd létre a következő parancs fájlt:

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

Majd add ki ezt a parancsot:

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

## Tudom hogy mit csinálok...

Ha készítettél egy megfelelő hibajelentést a fenti utasítások betartásával és biztos vagy benne, hogy az MPlayerben van a hiba és nem a fordítóban vagy hibás fájl miatt, már elolvastad a dokumentációt és nem tudtad javítani a problémát, a hang vezérlőid rendben vannak, akkor iratkozz fel az MPlayer-advusers listára és küldd el a hibajelentésedet oda a jobb és gyorsabb válaszért.

Fontold meg, ha kezdő kérdéseket vagy a leírásban megválaszolt kérdéseket küldesz be, vagy figyelmen kívül hagynak vagy elkezdenek flame-elni válaszolás helyett. Tehát ne flame-elj és csak akkor iratkozz fel az -advusers listára, ha tényleg tudod, hogy mit csinálsz és gyakorlott MPlayer felhasználónak vagy fejlesztőnek érzed magad. Ha megfelesz ezen kritériának, nem fog nehezedre esni, hogy kitaláld, hogy iratkozhatsz fel...