<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r21760 -->
<!-- Opiekun: Boski -->

<appendix id="bugreports">
<title>Jak zgłaszać błędy</title>

<para>
Dobre raporty błędów stanowią bardzo istotny wkład w rozwój każdego
projektu. Jednak tak jak pisanie dobrych programów wymaga sporo pracy, tak
dobre zgłoszenia problemów wymagają trochę wysiłku. Prosimy wziąć pod uwagę to,
że większość deweloperów jest bardzo zajęta i odbiera nieprzyzwoitą wręcz
ilość listów. Wsparcie ze strony użytkownika jest naprawdę ważne w procesie
rozwoju <application>MPlayera</application>. Należy jednak pamiętać, że
trzeba dostarczyć <emphasis role="bold">wszystkie</emphasis> informacje o które
poprosimy i postępować dokładnie według instrukcji zawartej w tym dokumencie.
</para>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_security">
<title>Zgłaszanie błędów związanych z bezpieczeństwem</title>

<para>
Jeśli znalazłeś lukę, którą można wykorzystać, i chcesz zrobić dobry uczynek
i pozwolić nam ją naprawić zanim ją ujawnisz, chętnie przyjmiemy zgłoszenie
bezpieczeństwa pod adresem
<ulink url="mailto:&#115;&#101;&#99;&#117;&#114;&#105;&#116;&#121;&#64;&#109;&#112;&#108;&#97;&#121;&#101;&#114;&#104;&#113;&#46;&#104;&#117;">&#115;&#101;&#99;&#117;&#114;&#105;&#116;&#121;&#64;&#109;&#112;&#108;&#97;&#121;&#101;&#114;&#104;&#113;&#46;&#104;&#117;</ulink>.
Proszę pisać w języku angielskim i dodać [SECURITY] albo [ADVISORY] w temacie.
Upewnij się że Twoje zgłoszenie zawiera całkowity i dokładny opis błędu.
Jeśli wyślesz też poprawkę będziemy bardzo szczęśliwi.
Proszę, nie opóźniaj zgłoszenia żeby stworzyć exploit wykorzystujący lukę,
możesz go wysłać w następnym liście.
</para>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_fix">
<title>Jak poprawiać błędy</title>

<para>
Jeżeli uważasz, że posiadasz wystarczające umiejętności, namawiamy Cię do
samodzielnego poprawiania błędów. A może już to zrobiłeś? Przeczytaj
<ulink url="../../tech/patches.txt">ten krótki dokument</ulink>, żeby dowiedzieć
się w jaki sposób dodać swoją łatę do źródeł
<application>MPlayera</application>. Jeżeli będziesz miał jakieś pytania,
pomogą Ci ludzie z listy
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">MPlayer-dev-eng</ulink>
(tylko w języku angielskim -przyp. tłumacza).
</para>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_regression_test">
<title>Jak wykonać test regresji za pomocą Subversion</title>

<para>
Czasami zdarza się problem typu "wcześniej działało, a teraz przestało...".
Tutaj znajduje się, opisana krok po kroku, procedura, której celem jest próba
znalezienia źródła problemu.
<emphasis role="bold">Nie jest</emphasis> ona przeznaczona
dla przeciętnego użytkownika.
</para>

<para>
Najpierw należy pobrać źródła MPlayera z SVN.
Więcej szczegółów na ten temat znajduje się w
<ulink url="http://www.mplayerhq.hu/design7/dload.html#svn">sekcji o Subversion strony pobierania</ulink>.
</para>

<para>
W rezultacie w katalogu mplayer/ znajdzie się obraz drzewa Subversion, po stronie klienta.
Teraz zaktualizuj ten obraz do daty, która Cię interesuje:
<screen>
cd mplayer/
svn update -r {"2004-08-23"}
</screen>
Format daty to RRRR-MM-DD GG:MM:SS.
Używając takiego formatu daty masz pewność, że będziesz w stanie wyciągać łatki
zgodnie z datą, gdy zostały dodane, dokładnie tak jak w przypadku
<ulink url="http://lists.mplayerhq.hu/pipermail/mplayer-cvslog/">archiwum listy MPlayer-cvslog</ulink>.
</para>

<para>
Następnie postępuj tak jak w przypadku normalnej aktualizacji:
<screen>
./configure
make
</screen>
</para>

<para>
Jeżeli czytasz ten dokument, a nie jesteś programistą, najszybszym
sposobem na dotarcie do miejsca w którym pojawi się problem jest
użycie binarnego wyszukiwania &mdash; tzn. szukania daty
pojawienia się problemu poprzez dzielenie interwału czasowego na pół
przy każdym kolejnym wyszukiwaniu.
Przykładowo, jeżeli problem wystąpił w 2003, spróbuj najpierw szukać
problemu w wydaniu z połowy roku. Jeżeli będzie obecny, cofnij się
do pierwszego kwietnia; jeżeli nie, przejdź do pierwszego października itd.
</para>

<para>
Jeżeli masz dużo wolnego miejsca na twardym dysku (pełna kompilacja
zajmuje aktualnie 100 MB albo około 300-350 MB jeżeli uaktywnione
jest debuggowanie), skopiuj najstarszą działającą wersję zanim dokonasz
aktualizacji; oszczędzi to sporo czasu, jeżeli zajdzie potrzeba powrotu
do starszej wersji.
(Zazwyczaj konieczne jest uruchomienie 'make distclean' przed
rekompilacją wcześniejszej wersji, więc jeżeli nie zrobisz kopii zapasowej
oryginalnego drzewa, będziesz musiał wszystko rekompilować, jeśli
będziesz chciał wrócić do aktualnej wersji.)
</para>

<para>
Kiedy znajdziesz dzień w którym pojawił się problem, kontynuuj szukanie
używając archiwum mplayer-cvslog (uporządkowane wg daty) i bardziej
precyzyjnych aktualizacji svn obejmujących godziny, minuty i sekundy:
<screen>
svn update -r {"2004-08-23 15:17:25"}
</screen>
To pomoże ci łatwo znaleźć łatkę, która jest winowajcą.
</para>

<para>
Jeżeli znajdziesz łatkę, która jest źródłem problemu, to znaczy, że już
prawie osiągnąłeś sukces; wyślij informację o niej na
<ulink url="http://bugzilla.mplayerhq.hu/">MPlayer Bugzilla</ulink>
lub zapisz się na listę
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users">MPlayer-users</ulink>
i tam wyślij raport.
Istnieje szansa, że autor łatki zasugeruje w jaki sposób rozwiązać problem.
Możesz też wpatrywać się w łatkę tak długo, aż nie będzie mogła wytrzymać
i wyjawi ci lokalizację błędu:-).
</para>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_report">
<title>Jak zgłaszać błędy</title>

<para>
Po pierwsze sprawdź najnowszą wersję SVN <application>MPlayera</application>,
ponieważ dany błąd może być już w niej naprawiony. Rozwój
<application>MPlayera</application> przebiega naprawdę szybko, większość
problemów występujących w oficjalnych wydaniach jest zgłaszana w ciągu kilku dni
albo nawet godzin. Dlatego też prosimy używać <emphasis role="bold">tylko wersji
z Subversion</emphasis> do zgłaszania błędów. Dotyczy to głównie pakietów binarnych
<application>MPlayera</application>. Instrukcje dotyczące Subversion znajdują się
na dole <ulink url="http://www.mplayerhq.hu/dload.html">tej strony</ulink>
lub w pliku README. Jeżeli problem dalej występuje prosimy sprawdzić listę
znanych błędów i resztę dokumentacji. Jeżeli problem
nie jest znany lub rozwiązany przez naszą dokumentację prosimy zgłosić błąd.
</para>

<para>
Nie należy wysyłać zgłoszeń do deweloperów. <application>MPlayer</application>
jest dziełem dużej grupy, więc więcej osób może być zainteresowanych tym
problemem. Czasami inni użytkownicy spotkali się już z danym problemem i wiedzą,
jak go rozwiązać, nawet jeżeli jest to błąd w kodzie
<application>MPlayera</application>.
</para>

<para>
Prosimy opisywać problem tak dokładnie, jak to tylko możliwe. Należy sprawdzić w
jakich dokładnie okolicznościach pojawia się błąd. Czy występuje on tylko w
określonych sytuacjach? Czy ma związek z konkretnym plikiem lub typem plików?
Czy dotyczy tylko danego kodeka, czy też jest niezależny od kodeków? Czy możesz
go powtórzyć z każdym wyjściem video? Im więcej informacji dostarczysz, tym
większe są szanse na rozwiązanie zgłoszonego problemu. Nie należy również
zapominać o dołączeniu wartościowych informacji wymienionych poniżej. W
przeciwnym wypadku nie będziemy w stanie prawidłowo zdiagnozować zgłoszonego
problemu.
</para>

<para>
Doskonałym i dobrze napisanym przewodnikiem dotyczącym zadawania pytań jest
dokument <ulink url="http://www.catb.org/~esr/faqs/smart-questions.html">"Jak
mądrze zadawać pytania"</ulink> napisany przez
<ulink url="http://www.catb.org/~esr/">Erica S. Raymonda</ulink>
(Polskie tłumaczenie tego dokumentu można znaleźć
<ulink url="http://rtfm.killfile.pl/">tutaj</ulink> -przyp. tłum.). Istnieje
także inny dokumentem tego typu zatytułowany
<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">Jak efektywnie zgłaszać błędy</ulink>
stworzony przez <ulink url="http://www.chiark.greenend.org.uk/~sgtatham/">Simona Tathama</ulink>
(Polskie tłumaczenie tego dokumentu można znaleźć
<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs-pl.html">tutaj</ulink>
-przyp. tłum.). Jeśli będziesz postępował zgodnie z tymi przewodnikami,
powinieneś uzyskać pomoc. Prosimy jednak pamiętać, że śledzimy listę jako
ochotnicy, poświęcając nasz wolny czas. Jesteśmy bardzo zajęci i nie potrafimy
zagwarantować, że pomożemy rozwiązać zgłoszony problem, ani nawet tego, że
odpowiemy na Twoje zgłoszenie.
</para>

</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_where">
<title>Gdzie zgłaszać błędy</title>

<para>
Zapisz się na listę MPlayer-users:
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users"/>
i wyślij swoje zgłoszenie błędu na
<ulink url="mailto:mplayer-users@mplayerhq.hu"/>, gdzie będzie można je omówić.
</para>

<para>
Jeżeli wolisz, możesz zamiast tego skorzystać z naszej nowej
<ulink url="http://bugzilla.mplayerhq.hu/">Bugzilli</ulink> (systemu zgłaszania błędów - przyp. tłum.)
</para>

<para>
Językiem obowiązującym na tej liście jest
<emphasis role="bold">angielski</emphasis>. Prosimy trzymać się zasad standardowej
<ulink url="http://www.ietf.org/rfc/rfc1855.txt">netykiety</ulink>
(Polską wersję netykiety można przeczytać np.
<ulink url="http://www.pg.gda.pl/~agatek/netq.html">tutaj</ulink> - przyp. tłum.)
i <emphasis role="bold">nie wysyłać listów w HTML-u</emphasis> na żadną z naszych
list. W przeciwnym wypadku zostaniesz zignorowany lub wyrzucony z listy. Jeżeli
nie wiesz czym jest list w HTML-u albo dlaczego jest on zły, przeczytaj ten
<ulink url="http://efn.no/html-bad.html">świetny dokument</ulink> (znów tylko
po angielsku - przyp. tłum.). Wyjaśnia on wszystkie szczegóły i zawiera
instrukcje wyłączania HTML-u. Zauważ również, że nie wysyłamy kopii listów do
użytkowników, więc dobrym pomysłem jest zapisanie się na listę w celu uzyskania
odpowiedzi.
</para>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_what">
<title>Co zgłaszać</title>

<para>
Może zajść potrzeba dołączenia logu, konfiguracji lub przykładowego
pliku w Twoim
zgłoszeniu błędu. Jeżeli któryś z nich ma duży rozmiar, lepiej załadować go na
nasz <ulink url="http://streams.videolan.org/upload/">serwer HTTP</ulink>
w skompresowanej postaci (gzip i bzip2 są preferowanymi formatami) i załączyć
tylko ścieżkę i nazwę pliku do zgłoszenia błędu. Nasza lista ma ustawiony limit
rozmiaru każdej wiadomości na 80k. Jeżeli potrzebujesz wysłać coś większego,
musisz to skompresować albo załadować na serwer.
</para>

<!-- ********** -->

<sect2 id="bugreports_system">
<title>Informacja o systemie operacyjnym</title>

<para>
<itemizedlist>
<listitem><para>
Nazwa Twojej dystrybucji Linuksa albo system operacyjny. Np.:
  <itemizedlist>
    <listitem><para>Red Hat 7.1</para></listitem>
    <listitem><para>Slackware 7.0 + pakiety rozwojowe z 7.1 ...</para></listitem>
  </itemizedlist>
</para></listitem>
<listitem><para>
  wersja jądra (kernela):
  <screen>uname -a</screen>
</para></listitem>
<listitem><para>
  wersja biblioteki libc:
  <screen>ls -l /lib/libc[.-]*</screen>
</para></listitem>
<listitem><para>
  wersja gcc i ld:
  <screen>
gcc -v
ld -v<!--
  --></screen>
</para></listitem>
<listitem><para>
  wersja binutils:
  <screen>as --version</screen>
</para></listitem>
<listitem><para>
  Jeżeli masz problem z trybem pełnoekranowym:
  <itemizedlist>
    <listitem><para>Menadżer okien i wersja</para></listitem>
  </itemizedlist>
</para></listitem>
<listitem><para>
  Jeżeli masz problem z XVIDIXem:
  <itemizedlist>
  <listitem><para>
    głębia barw Xów (colour depth):
    <screen>xdpyinfo | grep "depth of root"</screen>
  </para></listitem>
  </itemizedlist>
</para></listitem>
<listitem><para>
  Jeżeli tylko GUI zawiera błędy:
  <itemizedlist>
    <listitem><para>wersja GTK</para></listitem>
    <listitem><para>wersja GLIB</para></listitem>
    <listitem><para>wersja libpng</para></listitem>
    <listitem><para>Sytuacja w której pojawia się błąd GUI</para></listitem>
  </itemizedlist>
</para></listitem>
</itemizedlist>
</para>
</sect2>

<!-- ********** -->

<sect2 id="bugreports_hardware">
<title>Sprzęt i sterowniki</title>

<para>
<itemizedlist>
<listitem><para>
  informacje o procesorze (CPU) (to działa tylko pod Linuksem):
  <screen>cat /proc/cpuinfo</screen>
</para></listitem>
<listitem><para>
  Producent karty graficznej i model. Np.:
  <itemizedlist>
    <listitem><para>ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM</para></listitem>
    <listitem><para>Matrox G400 DH 32MB SGRAM</para></listitem>
  </itemizedlist>
</para></listitem>
<listitem><para>
  Typ sterownika video i wersja, np:
  <itemizedlist>
    <listitem><para>wbudowane sterowniki X</para></listitem>
    <listitem><para>nVidia 0.9.623</para></listitem>
    <listitem><para>Utah-GLX CVS 2001-02-17</para></listitem>
    <listitem><para>DRI z X 4.0.3</para></listitem>
  </itemizedlist>
</para></listitem>
<listitem><para>
  Typ karty dźwiękowej i sterownik, np:
  <itemizedlist>
    <listitem><para>Creative SBLive! Gold ze sterownikiem OSS z oss.creative.com</para></listitem>
    <listitem><para>Creative SB16 ze sterownikiem OSS z kernela</para></listitem>
    <listitem><para>GUS PnP z emulacją ALSA OSS</para></listitem>
  </itemizedlist>
</para></listitem>
<listitem><para>
  Jeżeli masz wątpliwości, załącz wyjście linuksowego polecenia
  <command>lspci -vv</command>.
</para></listitem>
</itemizedlist>
</para>
</sect2>

<!-- ********** -->

<sect2 id="bugreports_configure">
<title>Problemy z konfiguracją</title>

<para>
Jeżeli <command>./configure</command> zwraca błąd albo
automatyczne wykrywanie czegoś zawiedzie, przeczytaj
<filename>config.log</filename>. Możliwe, że znajdziesz tam odpowiedź, na
przykład kilka połączonych wersji tej samej biblioteki w Twoim systemie albo że
zapomniałeś zainstalować pakietów rozwojowych (tych z przyrostkiem -dev albo
-devel). Jeżeli wydaje Ci się, że istnieje jednak błąd, załącz
<filename>config.log</filename> w twoim raporcie.
</para>
</sect2>

<!-- ********** -->

<sect2 id="bugreports_compilation">
<title>Problemy z kompilacją</title>

<para>
Prosimy załączyć następujące pliki:
<itemizedlist>
  <listitem><para>config.h</para></listitem>
  <listitem><para>config.mak</para></listitem>
</itemizedlist>
</para>
</sect2>

<!-- ********** -->

<sect2 id="bugreports_playback">
<title>Problemy z odtwarzaniem</title>

<para>
Prosimy załączyć wyjście <application>MPlayera</application> w trybie gadatliwym
na poziomie pierwszym (opcja -v - przyp. tłum.), ale pamiętając o
<emphasis role="bold">nie skracaniu wyniku polecenia</emphasis> podczas
kopiowania go do Twojego listu. Deweloperzy potrzebują wszystkich informacji do
prawidłowego zdiagnozowania problemu. Możesz przekierować wyjście bezpośrednio
do pliku w ten sposób:
<screen>mplayer -v <replaceable>opcje</replaceable> <replaceable>nazwa_pliku</replaceable> &gt; mplayer.log 2&gt;&amp;1</screen>
</para>

<para>
Jeżeli Twój problem jest specyficzny dla jednego albo wielu plików, załaduj
winowajcę(ów) na:
<ulink url="http://streams.videolan.org/upload/"/>
</para>

<para>
Załaduj także mały plik tekstowy nazwany tak samo jak Twój plik, ale z
rozszerzeniem .txt. Opisz w nim problem, który masz z zawartym plikiem i załącz
swój adres email oraz wyjście <application>MPlayera</application> w trybie
gadatliwym na poziomie pierwszym. Zazwyczaj pierwsze 1-5 MB pliku jest
wystarczające do odtworzenia problemu, ale żeby być pewnym prosimy wykonać:
<screen>
dd if=<replaceable>twój_plik</replaceable> of=<replaceable>mały_plik</replaceable> bs=1024k count=5
</screen>
To polecenie weźmie pierwsze pięć megabajtów
'<emphasis role="bold">twojego_pliku</emphasis>' i zapisze je do
'<emphasis role="bold">małego_pliku</emphasis>'. Następnie spróbuj odtworzyć
mały plik i jeśli błąd wciąż się pojawia plik ten jest dla nas wystarczający.
Prosimy <emphasis role="bold">w żadnym wypadku</emphasis> nie wysyłać plików
poprzez pocztę elektroniczną! Załaduj je na serwer FTP i wyślij tylko
ścieżkę/nazwę pliku. Jeżeli plik jest dostępny w sieci, wyślij
<emphasis role="bold">dokładny</emphasis> adres pod którym jest on dostępny.
</para>
</sect2>

<!-- ********** -->

<sect2 id="bugreports_crash">
<title>Awarie programu (ang. Crashes)</title>

<para>
Musisz uruchomić <application>MPlayera</application> wewnątrz
<command>gdb</command> i wysłać nam kompletne wyjście, albo jeżeli posiadasz
zrzut <filename>core</filename> (ang. core dump) utworzony w wyniku awarii,
wyciągnąć z niego użyteczne informacje. Oto jak to zrobić:
</para>


<sect3 id="bugreports_debug">
<title>Jak otrzymać informację o awarii</title>

<para>
Przekompiluj <application>MPlayera</application> z opcją debugowania kodu:
<screen>
./configure --enable-debug=3
make
</screen>
i uruchom <application>MPlayera</application> używając gdb:
<screen>gdb ./mplayer</screen>
Jesteś teraz wewnątrz gdb. Wpisz:
<screen>
run -v <replaceable>opcje-mplayera</replaceable> <replaceable>nazwa_pliku</replaceable>
</screen>
i odtwórz swoją awarię. Gdy tylko to zrobisz, gdb przeniesie cię z powrotem do
wiersza poleceń, gdzie należy wpisać
<screen>
bt
disass $pc-32,$pc+32
info all-registers
</screen>
</para>
</sect3>


<sect3 id="bugreports_core">
<title>Jak wyciągnąć sensowne informacje ze zrzutu core (ang. core dump)</title>

<para>
Utwórz plik z nastepującymi poleceniami:
<screen>
bt
disass $pc-32,$pc+32
info all-registers
</screen>
A następnie uruchomić następujące polecenie:
<screen>
gdb mplayer --core=core -batch --command=<replaceable>plik_z_poleceniami</replaceable> &gt; mplayer.bug
</screen>
</para>
</sect3>
</sect2>
</sect1>


<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->


<sect1 id="bugreports_advusers">
<title>Wiem co robię...</title>

<para>
Jeżeli utworzyłeś właściwy raport błędu kierując się powyższymi wskazówkami i
jesteś pewien że to błąd <application>MPlayera</application>, nie kompilatora
albo uszkodzonego pliku, przeczytałeś dokumentację i nie możesz znaleźć
rozwiązania, Twoje sterowniki dźwięku są w porządku, możesz chcieć zapisać się
na listę MPlayer-advusers (tylko po angielsku - przyp. tłum.) i wysłać tam swoje
zgłoszenie błędu, aby uzyskać lepszą i szybszą odpowiedź.
</para>

<para>
Wiedz, że jeśli zadasz trywialne pytanie albo odpowiedź na nie znajduje się na
stronie man, zamiast dostać odpowiedź zostaniesz zignorowany
albo obrzucony wyzwiskami.
Dlatego też nie obrażaj nas i zapisz się na listę -advusers tylko jeżeli
naprawdę wiesz co robisz i czujesz się zaawansowanym użytkownikiem lub
deweloperem. Jeżeli spełniasz te kryteria, nie powinno Ci sprawić problemu
znalezienie sposobu zapisania się na listę
(pamiętaj, że musisz biegle znać j. angielski - przyp. tłum.)
</para>
</sect1>

</appendix>
