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 FTP 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...