# Dodatek B - Jak zgłaszać błędy

Dobry raport o błędzie jest bardzo wartościowym wkładem w rozwój każdego z projektów oprogramowania. Ale tak jak pisanie dobrego oprogramowania, tak dobry raport problemu wymaga trochę pracy. Prosimy, o zrozumienie, że większość programistów to ludzie ekstremalnie zajęci i otrzymują nieprzyzwoitą ilość e-maili. Więc, dopóki twoja reakcja jest decydująca w poprawianiu MPlayera i bardzo doceniana, prosimy zrozum, że musisz dostarczyć wszystkie informacje których wymagamy i wykonać wszystkie polecenia zawarte w tym dokumencie.

## B.1 Jak naprawiać błędy

Jeżeli czyjesz, że masz wystarczające umiejętności, jesteś zaproszony do naprawienia błędu własnoręcznie. Może już to zrobiłeś? Prosimy, przeczytaj ten krótki dokument by dowiedzieć się, jak dodać twój kod do MPlayera. Ludzie na grupie dyskusyjnej mplayer-dev-eng pomogą ci, jeżeli będziesz miał jakieś pytania.

## B.2 Jak zgłaszać błędy

Po pierwsze, wypróbuj najnowszą wersji MPlayera z CVSa, możliwe że twój błąd został już tam naprawiony. Programiści poruszają się naprawdę szybko, większość problemów z oficjalnego wydania jest raportowane w przeciągu dni lub nawet godzin, więc prosimy o używanie tylko CVS do raportowania błędów. Instrukcję do CVS można znaleźć na dole tej strony lub w README. Jeżeli to nie pomogło, przeczytaj listę znanych błędów i pozostałą część dokumentacji. Jeśli twój problem nie jest znany lub nasze instrukcje nie rozwiązują problemu, wtedy prześlij raport o błędzie.

prosimy o nie przesyłanie raportów o błędach bezpośrednio do programistów. Pracujemy zbiorowo, tak więc wielu użytkowników może się zainteresować tym problemem. Czasami inni użytkownicy, mający doświadczenie z twoim kłopotem, wiedzą jak ominąć problem, nawet jeżeli jest to błąd w kodzie MPlayera.

Prosimy, opisz swój problem możliwie najdokładniej. Wykonaj małe dochodzenie by znaleźć okoliczności, w których problem się pojawia. Może błąd pojawia się tylko w określonych sytuacjach? Występuje ze pojedyńczym plikiem lub typem plików? Występuje tylko z jednym kodekiem lub niezależnie od kodeka? Możesz powtórzyć błąd ze wszystkimi sterownikami wyjścia? Im więcej informacji dostarczysz, tym większe szanse na naprawienie twojego problemu. Prosimy, nie zapomnij umieścić wymaganych cennych informacji (patrz niżej), w przeciwnym wypadku, nie będziemy w stanie poprawnie zdiagnozować twojego problemu.

Świetne i dobrze napisany poradnik zadawania pytań w publicznych forach dyskusyjnych to How To Ask Questions The Smart Way (Jak Zadawać Pytania W Mądry Sposób) autorstwa Eric S. Raymond. Jest też inny nazwany How to Report Bugs Effectively (Jak Efektywnie Raportować Błędy) autorstwa Simon Tatham. artykuł w języku polskim to Jak mądrze zadawać pytania Jeżeli będziesz postępował zgodnie z tymi przewodnikami powinieneś uzyskać pomoc. Ale zrozum, że my wszyscy odpowiadamy na grupie dyskusyjnej w formie wolontariatu poświęcając nasz wolny czas. Jesteśmy bardzo zajęci i nie możemy gwarantować, że rozwiążemy twój problem, lub nawet odpowiemy na twój list.

## B.3 Gdzie zgłaszać błędy

Zapisz się na grupę dyskusyjną mplayer-users:
http://mplayerhq.hu/mailman/listinfo/mplayer-users
i wyślij swój raport o błędzie do:
mplayer-users@mplayerhq.hu

Językiem grupy jest Angielski. Prosimy o dostosowanie się do standardu Netiquette Guidelines i nie wysyłać e-maili w HTML do której kolwiek z naszych grup dyskusyjnych. Zostaniesz po prostu zignorowany lub zbanowany. Jeśli nie wiesz co to jest e-mail w HTML lub dlaczego jest zły, przeczytaj ten świetny dokument. Wyjaśnia wszystkie detale i daje instrukcje, jak wyłączyć HTML. Ponad to zauważ, że nie będziemy odpowiadać indywidualnie CC (carbon-copy), tak więc jest dobrym pomysłem zasubskrybować grupę, by odebrać odpowiedź na swój list.

## B.4 Co raportować

Być może, że będziesz musiał załączyć plik log, konfigurację lub próbkę pliku w swoim raporcie o błędzie. Jeżeli będzie on dość spory, wtedy lepiej będzie, gdy prześlesz go na nasz serwer FTP w skompresowanym formacie (preferowany gzip i bzip2) i dołącz tylko ścieżkę i nazwę pliku do twojego raportu o błędzie. Nasze grupa dyskusyjna ma ograniczeni rozmiaru wiadomości na 80k, jeżeli masz coś większego, musisz to skompresować lub wysłać na serwer.

### B.4.1 Informacje o systemie

- Twoja dystrybcje Linuksa lub system operacyjny i wersja np.:
  - Red Hat 7.1
  - Slackware 7.0 + devel packs from 7.1 ...
- wersja kernela:
  `uname -a`
- wersja libc:
  `ls -l /lib/libc[.-]*`
- wersja X:
  `X -version`
- wersje gcc i ld:
  `gcc -v
  ld -v`
- wersja binutils:
  `as --version`
- Jeśli masz problemy z trybem pełnoekranowym:
  - Typ i wersja menedżera okien
- Jeśli masz problemy z XVIDIX:
  - głębia kolorów w X:
    `xdpyinfo | grep "depth of root"`
- Jeżeli tylko GUI jest z błędem:
  - wersja GTK
  - wersja GLIB
  - wersja libpng
  - sytuacja GUI, w której błąd wystąpił

### B.4.2 Sprzęt i sterowniki

- Informacja o CPU (działa tylko z Linuksem):
  `cat /proc/cpuinfo`
- Producent i model karty graficznej, np.:
  - ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
  - Matrox G400 DH 32MB SGRAM
- Typ sterownika wideo & wersja, np.:
  - wbudowany sterownik X
  - nVidia 0.9.623
  - Utah-GLX CVS 2001-02-17
  - DRI z X 4.0.3
- Typ karty dźwiękowej & sterownik, np.:
  - Creative SBLive! Gold ze sterownikiem OSS z oss.creative.com
  - Creative SB16 ze sterownikiem OSS z kernela
  - GUS PnP z emulacją OSSw ALSA
- W razie wątpliwości dołącz wyjście z `lspci -vv` w systemie Linux.

### B.4.3 Problemy z kompilacją

Prosimy o dołączenie tych plików:

- `config.h`
- `config.mak`

Tylko jeżeli kompilacja nie powodzi się w jednym z tych katalogów, dołącz te pliki:

- `Gui/config.mak`
- `libvo/config.mak`
- `libao2/config.mak`

### B.4.4 Problemy z configure

Dołącz `configure.log`.

### B.4.5 Problemy z odtwarzaniem

Prosimy, dołącz wyjście MPlayera za 1 poziomie gadatliwości, ale pamiętaj nie przycinaj wyjścia podczas wklejania go do twojego listu. Programiści potrzebują wszystkich komunikatów by poprawnie zdiagnozować problem. Możesz przekierować wyjście do pliku komendą podobną do:

`mplayer -v [opcje] [nazwa_pliku] > mplayer.log 2>&1`

Jeżeli twój problem jest specyficzny dla jednego lub więcej plików, wtedy prześlij go (je) na:

ftp://mplayerhq.hu/MPlayer/incoming/

Ponad to prześlij mały plik tekstowy zawierający tę samą nazwę podstawową co twój plik, tyle że z rozszerzeniem .txt. Opisz problem który występuje z danym plikiem i dołącz twój adres e-mail i najlepiej jeszcze wyjście MPlayera na 1 poziomie gadatliwości. Zazwyczaj pierwsze 1-5 MB pliku wystarcza na odtworzenie problemu, ale dla pewności prosimy cię o:

`dd if=twój_plik of=mały_plik bs=1024k count=5`

Wytnie to pierwsze pięć megabajtów z 'twój_plik' i zapisze to do 'mały_plik'. Potem wypróbuj mały plik, jeżeli błąd dalej się pojawia, próbka jest dla nas wystarczająca. Prosimy, nigdy nie wysyłaj takich plików przez e-mail! Wyślij na serwer, i podaj tylko ścieżkę/nazwę pliku na serwerze FTP. Jeśli plik jest dostępny przez Internet, wysłany dokładny URL jest wystarczający.

### B.4.6 Wywalenie się programu (ang. crashe)

Musisz uruchomić MPlayera wewnątrz `gdb` i wysłać nam kompletne wyjście lub jeżeli masz zrzut rdzenia (ang. core dump) po wywaleniu się, możesz wyciągnąć użyteczne informacje z pliku `Core`. Poniżej pokazano jak:

#### B.4.6.1 Jak przechować informacje powtarzalnym wywaleniu się

Przekompiluj MPlayera z włączoną obsługą debugowania:

`./configure --enable-debug=3
make`

i uruchom MPlayer wewnątrz db używając:

`gdb ./mplayer`

Jesteś teraz w gdb. Wpisz:

`run -v [opcje_dla_MPlayera] nazwa_pliku`

i powtórz "wywałkę". Wkrótce po tym jak to zrobisz, gdb zwróci ci dostęp do linii komend gdzie musisz wprowadzić

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

#### B.4.6.2 Jak wydobyć sensowne informacje z zrzutu rdzenia (ang. core dump)

Prosimy, stwórz podany plik rozkazowy (skrypt):

`disass $pc-32 $pc+32
info all-registers`

Potem po prostu uruchom podaną komendę:

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

## B.5 Wiem co robię...

Jeśli stworzyłeś poprawny raport o błędzie, postępując zgodnie z podanymi wskazówkami oraz jesteś pewien, że to błąd MPlayera, nie kompilatora, czy zepsutego pliku, przeczytałeś dokumentację i nadal nie znalazłeś rozwiązania, a twoje sterowniki karty dźwiękowej są w porządku, wówczas możesz zasubskrybować listę dyskusyjną mplayer-advusers i wysłać swój raport, aby dostać szybszą i lepszą odpowiedź.
Prosimy o rozwagę. bo jeżeli wyślesz pytanie w stylu początkującego lub pytanie na które jest odpowiedź w manualu, wtedy zostaniesz zignorowany lub obrażony zamiast otrzymania właściwej odpowiedzi.
Więc nie obrażaj nas i zasubskrybuj -advusers tylko jeżeli naprawdę wiesz co robisz i czyjesz się jakbyś był zaawansowanym użytkownikiem MPlayera lub programistą. Jeżeli spełniasz te kryteria, nie powinno być dla ciebie kłopotem znalezienie sposobu, jak się zasubskrybować..