Jak hlásit chyby
Dobrá hlášení chyb jsou velmi cenným příspěvkem do vývoje jakéhokoli
softwarového projektu. Ale je to s nimi jako se psaním dobrého
programu, sepsání dobrého hlášení problému vyžaduje trochu práce.
Prosím berte na vědomí, že většina vývojářů je velmi zaneprázdněna a
dostává kvanta e-mailů. Takže ačkoli je vaše zpětná vazba kritická pro
vylepšování MPlayeru a velmi ceněná, prosíme
pochopte, že musíte poskytnout veškeré
informace které požadujeme a postupovat přesně podle instrukcí v tomto
dokumentu.
Hlášení bezpečnostních chyb
V případě že jste nalezli exploitovatelnou chybu, chtěli byste udělat správnou
věc a nechali nás ji opravit než ji odhalíte, budeme rádi, když nám pošlete
bezpečnostní hlášení na
security@mplayerhq.hu.
Do hlavičky prosíme přidejte [SECURITY] nebo [ADVISORY].
Ujistěte se, že vaše hlášení obsahuje úplnou a podrobnou analýzu chyby.
Zaslání opravy je velice žádoucí.
Prosíme neodkládejte hlášení do doby než vytvoříte 'dokazovací' exploit, ten nám
můžete zaslat dalším mailem.
Jak napravovat chyby
Pokud si myslíte, že máte potřebné schopnosti, pak vás vybízíme abyste
opravil(a) chybu samostatně. Nebo jste to již udělal(a)? Přečtěte si prosím
tento krátký dokument, abyste se
dozvěděli jak zahrnout váš kód do MPlayeru.
Lidé z konference
MPlayer-dev-eng
vám pomohou, pokud budete mít otázky.
Jak provádět regresní testování pomocí Subversion
Občas nastane problém typu 'předtím to fungovalo, teď už ne...'.
Zde přinášíme postup krok za krokem, jak vyhledat, kdy problém
nastal. Toto není určeno příležitostným
uživatelům.
Nejprve si musíte opatřit zdrojové kódy MPlayeru ze Subversion.
Instrukce lze nalést v
sekci Subversion stránky download.
Tak dostanete v adresáři mplayer/ obraz Subversion stromu na straně klienta.
Nyní aktualizujte tento obraz k datu, které chcete:
cd mplayer/
svn update -r {"2004-08-23"}
Formát data je YYYY-MM-DD HH:MM:SS.
Požití tohoto datového formátu zajišťuje, že budete schopni extrahovat
patche podle data, kdy byly zapsány (commit) stejně, jak jsou v
MPlayer-cvslog archivu.
A teď proveďte sestavení jako při normální aktualizaci:
./configure
make
Pokud to čte nějaký neprogramátor, nejrychlejší metodou, jak se dostat
k bodu, kde problém nastal, je použití binárního vyhledávání – to je
vyhledávání data poruchy opakovaným dělením vyhledávacího intervalu napůl.
Například pokud problém nastal v 2003, začneme v polovině roku a ptáme se,
„Už je tu problém?“.
Pokud ano, vraťte se na prvního dubna; pokud ne, běžte na prvního října
a tak dále.
Pokud máte spoustu místa na disku (plná kompilace obvykle zabírá 100 MB
a kolem 300–350 MB, pokud jsou zapnuty debugovací symboly), zkopírujte
nejstarší známou funkční verzi před jejím updatem; to vám ušetří čas,
pokud se budete vracet.
(Obvykla je nutné spustit 'make distclean' před rekompilací starší verze,
takže pokud si neuděláte záložní kopii originálního zdrojového stromu,
budete v něm muset rekompilovat vše, až se vrátíte do současnosti.)
Pokud jste našli den, kdy k problému došlo, pokračujte v hledání pomocí
archivu mplayer-cvslog (řazeného podle data) a preciznějším cvs update
s uvedením hodiny, minuty a sekundy:
cvs update -PAd -D "2004-08-23 15:17:25"
To vám umožní lehce najít patch, který problém způsobil.
Pokud jste našli patch, který je příčinou problému, máte téměř vyhráno;
ohlaste to do
MPlayer Bugzilly nebo
se přihlaste do
MPlayer-users
a pošlete to tam.
Je šance, že autor navrhne opravu.
Rovněž si můžete patch rozpitvat, dokud z něj nevytlučete, kde je chyba :-).
Jak oznamovat chyby
Nejprve, prosím, vyzkoušejte poslední Subversion verzi
MPlayeru, jelikož vaše chyba již mohla být
odstraněna. Vývoj je velmi rychlý, většina chyb v oficiálních balíčcích je
nahlášena během několika dnů, nebo dokonce hodin, takže prosím používejte
pouze Subversion pro hlášení chyb. To zahrnuje binární
balíčky MPlayeru. Subversion instrukce naleznete na konci
této stránky,
nebo v souboru README. Pokud to nepomůže, prostudujte si prosím seznam
známých chyb a zbytek dokumentace. Pokud je váš
problém neznámý nebo jej nelze řešit pomocí našich instrukcí pak jej nahlaste
jako chybu.
Prosíme, neposílejte hlášení chyb soukromě jednotlivým vývojářům. Toto je týmová
práce a proto se o ně může zajímat více lidí. Čas od času měli ostatní uživatelé
stejný problém a vědí jak jej obejít, dokonce i když se jedná o chybu v kódu
MPlayeru.
Prosíme popište svůj problém tak podrobně, jak je to jen možné. Proveďte malé
pátrání po okolnostech za kterých problém nastává. Projevuje se ta chyba jen
v určitých situacích? Je vlastní určitým souborům nebo typům souborů? Stává se
pouze s jedním kodekem, nebo je nezávislá na použitém kodeku? Dokážete ji
zopakovat se všemi výstupními rozhraními nebo ovladači?
Čím více nám poskytnete informací, tím je větší šance na odstranění problému.
Nezapomeňte také připojit hodnotné informace požadované níže, jinak nebudeme
schopni stanovit příčinu problému.
Skvělá, dobře napsaná příručka jak se ptát ve veřejných konferencích je
How To Ask Questions The Smart Way od
Erica S. Raymonda.
Další příručka je
How to Report Bugs Effectively
od Simona Tathama.
Pokud budete postupovat podle těchto rad, jistě se vám dostane pomoci. Pochopte
však, že my všichni sledujeme konference dobrovolně ve svém volném čase. Máme
mnoho práce a nemůžeme vám zaručit že vyřešíme váš problém nebo že vůbec
dostanete odpověď.
Kam hlásit chyby
Přihlaste se do e-mailové konference MPlayer-users:
a pošlete své hlášení o chybách na adresu
kde o tom můžeme diskutovat.
Pokud chcete, můžete místo toho použít zbrusu novou
Bugzillu.
Jazykem konference je Angličtina.
Zachovávejte prosím
Pravidla Netikety a
neposílejte HTML mail do žádné z našich
konferencí. Jinak můžete být ignorováni nebo vyhozeni. Pokud nevíte co je to
HTML mail, nebo proč je tak zatracován, přečtěte si tento
výborný dokument. Zde se
dovíte detaily včetně instrukcí pro vypnutí HTML. Poznamenejme též, že nebudeme
individuálně dělat CC (kopie) lidem, takže je dobré se přihlásit, abyste
obdrželi svou odpověď.
Co nahlásit
Bude potřeba připojit log, konfiguraci nebo vzorky souborů ke svému hlášení chyb.
Pokud jsou některé z nich opravdu velké, pak je raději nahrajte na náš
FTP server
v komprimovaném formátu (preferujeme gzip a bzip2) a do zprávy zahrňte pouze
cestu a název souboru. Naše konference mají limit velikosti zprávy 80k, pokud
máte něco většího, musíte to zkomprimovat a nahrát na FTP.
Systémové informace
Vaše Linuxová distribuce nebo operační systém a jeho verze jako:
Red Hat 7.1
Slackware 7.0 + devel packs from 7.1 ...
verze jádra:
uname -a
verze libc:
ls -l /lib/libc[.-]*
verze gcc a ld:
gcc -v
ld -v
verze binutils:
as --version
Pokud máte problémy s celoobrazovkovým režimem:
Druh Window manageru a jeho verze
Pokud máte problémy s XVIDIX:
Hloubka barev v X:
xdpyinfo | grep "depth of root"
Pokud je chybné pouze GUI:
verze GTK
verze GLIB
GUI situace kdy se chyba projevila
Hardware a rozhraní (ovladače)
CPU info (to funguje pouze v Linuxu):
cat /proc/cpuinfo
Výrobce a model videokarty, např:
ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
Matrox G400 DH 32MB SGRAM
Typ video ovladače a jeho verze, např.:
vestavěný ovladač z X
nVidia 0.9.623
Utah-GLX CVS 2001-02-17
DRI z X 4.0.3
Typ zvukové karty a ovladač, např.:
Creative SBLive! Gold s OSS ovladačem od oss.creative.com
Creative SB16 s OSS ovladači z jádra
GUS PnP s ALSA OSS emulací
Pokud si nejste jisti a používáte systém Linux, přidejte výstup
z lspci -vv.
Problémy s konfigurací
Pokud nastanou chyby během běhu ./configure, nebo selže
autodetekce něčeho, prostudujte config.log. Možná
naleznete odpověď zde. Například několik verzí stejné knihovny v systému, nebo
jste zapomněli nainstalovat vývojový (devel) balíček (to jsou ty s koncovkou
-dev). Pokud si myslíte, že je zde chyba, přidejte
config.log do svého hlášení.
Problémy s kompilací
Zahrňte prosím tyto soubory:
config.h
config.mak
Problémy s přehráváním
Zahrňte prosíme výstup MPlayeru v upovídaném
režimu úrovně 1 ale dejte pozor, abyste jej
nezkrátili
při kopírování do mailu. Vývojáři potřebují všechny zprávy pro dobrou diagnózu
problému. Takto můžete přesměrovat výstup do souboru:
mplayer -v volby film > mplayer.log 2>&1
Pokud se problém vztahuje k jednomu nebo více souborům, pak prosím nahrajte
potížisty na:
Rovněž zde nahrajte malý textový soubor se stejným základním jménem a příponou
.txt. Popište problém který máte s daným souborem a připojte svůj e-mail a také
výstup MPlayeru v upovídaném režimu úrovně 1.
Pro reprodukci problému stačí obvykle prvních 1-5 MB souboru, ale pro jistotu
vás žádáme o:
dd if=váš_soubor of=malý_soubor bs=1024k count=5
To vezme prvních pět megabajtů 'vašeho_souboru'
a zapíše je do 'malého_souboru'. Pak znovu
zkuste tento malý vzorek a pokud se na něm chyba projeví, pak je tento vzorek
pro nás dostatečný.
Prosíme nikdy neposílejte tyto soubory e-mailem!
Nahrajte je na FTP a pošlete pouze cestu/název_souboru daného souboru na FTP
serveru. Pokud je soubor přístupný na internetu, pak stačí poslat
přesnou adresu URL.
Pády
Musíte spustit MPlayer z gdb
a poslat nám úplný výstup nebo pokud máte core dump
z pádu, můžete nám vyextrahovat užitečné informace ze souboru Core.
Jak to udělat:
Jak uchovat informace o zopakovatelném pádu
Překompilujte MPlayer se zapnutým debugovacím kódem:
./configure --enable-debug=3
make
a spusťte MPlayer z gdb pomocí:
gdb ./mplayer
Nyní jste v gdb. Zadejte:
run -v volby-pro-mplayer soubor
a zopakujte pád. Jakmile to dokážete, vrátí se gdb do režimu příkazového řádku,
kde musíte zadat
bt
disass $pc-32 $pc+32
info all-registers
Jak získat smysluplné informace z core dump
Vytvořte následující příkazový řádek:
bt
disass $pc-32 $pc+32
info all-registers
Pak jednoduše spusťte tento příkaz:
gdb mplayer --core=core -batch --command=příkazový_soubor > mplayer.bug
Vím co dělám...
Pokud jste vytvořili příkladné hlášení chyby pomocí výšeuvedených kroků a
jste si jisti, že chyba je v MPlayeru, nikoli
v kompilátoru nebo poškozený soubor, již jste si přečetli dokumentaci,
ale nenalezli řešení, vaše ovladače zvuku jsou OK, pak byste se měli
přihlásit do konference MPlayer-advusers a poslat hlášení chyb zde,
abyste dostali lepší a rychlejší odpověď.
Mějte na paměti, že pokud zde pošlete nováčkovské otázky nebo otázky zodpovězené
v manuálu, budete ignorováni nebo peskováni, místo abyste dostali vhodnou odpověď.
Takže nám nenadávejte a přihlaste se do -advusers pouze pokud opravdu víte co
děláte a cítíte se být pokročilým uživatelem MPlayeru,
nebo vývojářem. Pokud splňujete tato kritéria, nebude pro vás těžké se
přihlásit...