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