# 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ą nieprzyzwitą ilośc e-maili. Więc, dopóki twoja reakcja jest decydująca w poprawianiu MPlayera i bardzo doceniana, prosimy zrozum, że musisz dostarczyć wszystki informacje których wymagamy i wykonyeać wszystkie polecenia zaarte 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ć sie, jak dodać twój kod do MPlayera. Ludzie na grupie duskusyjnej mplayer-dev-eng pomogą ci, jeżeli będziesz miał jakieś pytania.

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

Po pierwsze, wypróbuj najnowszej 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. Dotyczy to także pakietów binarnych MPlayera. Prosimy o nieraportowanie błędów z różnych pakietów RPM lub Debiana. 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łedach bezpośrednio do programistow. 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 oktreś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 inforamcji (patrz niżej), w przeciwnym wypadku, nie będziemy w stanie porawnie zdiagnowzować 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 proble, 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 sie do standardu Netiquette Guidelines i nie wysyłać e-maili w HTML do której kolwiek z naszyć 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ć indywiduaknie 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śc 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 menadżera okien
- Jeżli masz problemy z XVIDIX:
  - głebia 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 Configure problems

Jeżeli doświadczysz błędów podczas uruchamiania `./configure` lub autodetekcja czegoś nie wykryje, przeczytaj `configure.log`. Może znajdziesz tam odpowiedź, dla przykładu, kilka wersji tej samej biblioteki wymieszało się w twoim systemie, lub zapomniałeś zainstalować pakiety deweloperskie (które mają przyrostek -dev). Jeżeli sądzisz, że to błąd, dołącz `configure.log` do twojego raportu o błędzie.

### B.4.4 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.5 Problemy z odtwarzaniem

Prosimy, dołącz wyjście MPlayera za 1 poziomie gadatliowości, ale pamiętaj nie przycinaj wyjścia podczas wlejania 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 proble 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 tymm ajk to zrobisz, gdb zwróci ci dostęp do lini 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):

`bt
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 robie...

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