# Anhang B - Wie man einen Fehler berichtet

Gute Fehlerberichte sind bei jedem Softwareprojekt sehr wertvolle Beiträge für die Entwicklung. Aber genauso, wie es beim Schreiben guter Software ist, so verhält es sich auch mit guten Fehlerberichten: sie erfordern Arbeit. Bitte denk daran, dass die meisten Entwickler sehr beschäftigt sind und täglich einen unglaublichen Berg Mail erhalten. Auch wenn deine Rückmeldungen für die Entwicklung von MPlayer von entscheidender Bedeutung ist, so verstehe bitte, dass du wirklich alle hier verlangten Informationen zur Verfügung stellen und den Anweisungen dieses Dokumentes folgen musst, damit wir dir helfen können.

## B.1 Wie sollen Fehler behoben werden?

Wenn man geschickt genugt ist, kann man versuchen, den Fehler selber zu beheben, was äußerst positiv aufgenommen wird. Falls du das schon getan hast, solltest du dieses kurze Dokument lesen, um zu erfahren, wie der Code in MPlayer integriert werden kann. Die Leute auf der mplayer-dev-eng Mailingliste können ansonsten bei Fragen helfen.

## B.2 Wie sollen Fehler berichtet werden?

Probiere es als allererstes die aktuelle CVS-Version, da dein Problem möglicherweise schon gelöst ist. Die Entwicklung geht extrem schnell voran. Die meisten Probleme in offiziellen MPlayer-Versionen werden innerhalb von Tagen oder sogar Stunden den Entwicklern mitgeteilt. Deswegen berichte Fehler nur dann, wenn sie in der aktuellen CVS-Version auch noch vorliegen. CVS-Anweisungen können am unteren Ende dieser Seite oder im README gefunden werden. Wenn dies nicht hilft, sollte in der Liste der bekannten Fehler und dem Rest der Dokumentationen nachgesehen werden. Wenn dein Problem nicht bekannt ist oder durch unsere Anweisungen nicht gelst werden kann, dann berichte über den Fehler.

Sende auf keinen Fall Fehlerberichte an individuelle Entwickler. MPlayer ist Gemeinschaftsarbeit, also wird es vielleicht mehrere interessierte Leute geben. Es kommt auch teilweise vor, dass derselbe Fehler von anderen Benutzern gefunden wurde, die bereits eine Lösung zur Umgehung des Problems haben (sogar bei einem Fehler im MPlayer-Code).

Bitte beschreibe dein Problem so detailiert wie möglich. Dazu gehört ein klein wenig Detektivarbeit, um die Umstände einzuengen, unter denen das Problem auftritt. Tritt der Fehler nur in bestimmten Situationen auf? Ist er abhängig von der Datei oder dem Dateityp? Tritt er nur mit einem Codec oder mit allen auf? Tritt er mit allen Ausgabetreibern auf? Je mehr Information zur Verfügung gestellt werden, um so besser stehen die Chance, dass das Problem gelöst werden wird. Es sollte nicht vergessen werden, auch die wertvollen unten angeforderten Informationen miteinzubeziehen. Ansonsten ist es wahrscheinlich unmöglich, eine Diagnose des Fehlers zu erstellen.

Ein exzellenter und gut geschriebener Führer, wie Fragen in öffentlichen Foren gestellt werden sollen, ist How To Ask Questions The Smart Way von Eric S. Raymond. Es gibt auch einen zweiten Führer namens How to Report Bugs Effectively von Simon Tatham. Falls du diesen Richtlinien folgst, sollte alles gut gehen. Bitte verstehe, dass wir alle den Mailinglisten freiwillig in unserer Freizeit folgen. Wir sind sehr beschäftigt und können nicht garantieren, dass eine Lösung oder bloß eine Antwort zum beschriebenen Problem kommen wird.

## B.3 Wo sollen Fehler berichtet werden?

Tritt der mplayer-users Mailingliste bei:
http://mplayerhq.hu/mailman/listinfo/mplayer-users
und sende deinen Fehlerbericht an:
mplayer-users@mplayerhq.hu

Die Sprache der Liste ist Englisch. Es wird gebeten, den Netiquette-Richtlinien zu folgen und keine HTML-Mails zu irgendeiner unserer Listen zu senden. Man wird dabei bloss ignoriert oder von der Liste verstoßen. Falls du nicht weißt, was eine HTML-Mail ist, oder warum sie böse ist, dann lies dieses gute Dokument. Es erklärt alle Details und enthält Anweisungen, wie man HTML für Mails ausschaltet. Bitte denk auch daran, keine individuellen Kopien (CC) an einzelne Personen zu versenden. Es ist also eine gute Idee, sich an der Liste anzumelden, wenn man auch seine Antwort erhalten will.

## B.4 Was soll berichtet werden?

Du wirst wahrscheinlich Logdateien, Konfigurationsinformationen und Beispieldateien in deinen Fehlerbericht aufnehmen müssen. Wenn einige von ihnen ziemlich groß werden, so ist es besser, wenn du sie auf unseren FTP-Server hochlädst und sie vorher komprimierst (bitte mit `gzip` oder `bzip2`). Gib dann in deinem Fehlerbericht nur den Pfad- und Dateinamen an. Unsere Mailinglisten haben eine Größenbeschränkung auf 80k, sodass du größere Sachen definitiv komprimieren und hochladen musst.

### B.4.1 Systeminformationen

- Deine Linux-Distribution oder Betriebssystem und die Versionsnummer:
  - RedHat 7.1
  - Slackware 7.0 + Development-Pakete von 7.1 ...
- Kernelversion:
  `uname -a`
- libc-Version:
  `ls -l /lib/libc[.-]*`
- X-Version:
  `X -version`
- gcc- und ld-Versionen:
  `gcc -v
  ld -v`
- binutils-Version:
  `as --version`
- Wenn du Pobleme mit dem Vollbildmodus hast:
  - Window-manager-Typ und -Version
- Bei Problemen mit XVIDIX:
  - X-Farbtiefe:
    `xdpyinfo | grep "depth of root"`
- Falls nur das GUI einen Fehler enthält:
  - GTK-Version
  - GLIB-Version
  - libpng-Version
  - Zustand des GUIs, in dem der Fehler auftritt

### B.4.2 Hardware und Treiber

- CPU-Infos (dies funktioniert nur mit Linux):
  `cat /proc/cpuinfo`
- Grafikkartenhersteller und Modell:
  - ASUS V3800U, Chipset: nVidia TNT2 Ultra Pro 32MB SDRAM
  - Matrox G400 DH 32MB SGRAM
- Grafikkartentreiber-Typ & -Version:
  - X eigener Treiber
  - nVidia 0.9.623
  - Utah-GLX CVS 2001-02-17
  - DRI von X 4.0.3
- Soundkartentyp und -Treiber:
  - Creative SBLive! Gold mit OSS-Treiber von oss.creative.com
  - Creative SB16 mit OSS-Treiber des Kernels
  - GUS PnP mit ALSA-OSS-Emulation
- Wenn du unsicher bist, solltest du die Ausgabe von `lspci -vv` mitschicken (auf Linux-Systemen).

### B.4.3 Bei Fehlern bei `configure`

Wenn du Fehlermeldungen beim Aufruf von `./configure` bekommst oder einige Sachen nicht automatisch richtig erkannt werden, so lies `configure.log`. Eventuell findest du dort die Antwort, z.B. wenn verschiedene Versionen einer Bibliothek auf deinem System gemischt rumliegen, oder wenn du vergessen hast, das Entwicklungspaket zu installieren (das sind die, die auf -dev oder -devel enden).

### B.4.4 Bei Fehlern während des Übersetzens

Bitte schicke diese Dateien mit:

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

Nur wenn die Compilierung in einem der unten genannten Verzeichnisse fehlschlägt, füge diese Datein an:

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

### B.4.5 Bei Wiedergabeproblemen

Bitte füge die Ausgabe von MPlayer in Ausführlichkeits-Stufe 1 bei, aber denk daran die Ausgabe nicht zu kürzen, wenn diese der Mail eingefügt wird. Die Entwickler benötigen alle Meldungen, um eine geignete Diagnose des Problems durchführen zu können. Die Ausgabe kann mit folgendem Befehl in eine Datei geschrieben werden:

`mplayer -v [Optionen] [Dateiname] > mplayer.log 2>&1`

Wenn das Problem nur bei einer oder einigen wenigen Dateien auftritt, dann lade die Datei bitte auf ftp://mplayerhq.hu/MPlayer/incoming/

hoch.

Uploade auch eine kleine .txt-Datei mit dem selben Namen wie die Datei (+ .txt Endung), die eine Problembeschreibung zur jeweiligen Datei, die detaillierte Ausgabe (-v) von MPlayer und deine Email-Adresse enthält. Normalerweise reichen die ersten 1-5MB der Datei aus, um das Problem zu reproduzieren, aber als erstes solltest du folgendes ausprobieren:

`dd if=deinedatei of=kleinedatei bs=1024k count=5`

Das kopiert die ersten 5 MB von 'deinedatei' in die Datei 'kleinedatei'. Nun versuche es nochmals mit dieser kleinen Datei. Wenn der Fehler immer noch auftritt, dann reicht es, die kleine Datei hochzuladen.
Sende NIE solche Dateien via Mail! Lade sie herauf und schicke nur den Pfad/Dateinamen der Datei auf dem FTP Server. Wenn die Datei im Internet bereits verfügbar ist, so reicht die exakte URL aus.

### B.4.6 Bei Abstürzen

Du musst MPlayer aus `gdb` heraus aufrufen und uns die vollständige Ausgabe schicken. Wenn du einen core dump hast, dann kannst du auch aus der `core`-Datei nützliche Informationen extrahieren. So geht's:

#### B.4.6.1 Wie man Informationen bei einem reproduzierbaren Absturz bewahrt

Kompiliere MPlayer mit eingeschaltetem Debugging:

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

Starte nun gdb mit MPlayer:

`gdb ./mplayer`

Du bist nun in gdb. Gib folgendes ein:

`run -v [options-to-mplayer] filename`

und reproduziere deinen Absturz. Sobald er auftritt, wird gdb zur Eingabeaufforderung zurückkehren, bei der du

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

eingibst.

#### B.4.6.2 Wie man brauchbare Informationen von einem core dump extrahiert

Bitte erzeuge die folgende Befehlsdatei (Command File):

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

Dann führe einfach den folgenden Befehl auf der Konsole aus:

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

## B.5 Ich weiß, was ich tue...

Wenn du einen Fehlerbericht wie oben beschrieben geschreiben hast und du dir sicher bist, dass es ein Bug in MPlayer und nicht ein Problem mit dem Compiler oder eine defekte Datei ist, dann kannst du auch der mplayer-advusers-Mailingliste beitreten und dort posten, wenn du alle Dokumentation gelesen hast und dein Soundtreiber ok ist. Du wirst dort schnellere und besser Antworten erhalten.
Aber sei gewarnt: Wenn du Newbiefragen oder Fragen stellst, die in dieser Anleitung bereits beantwortet werden, wirst du ignoriert oder angemeckert, anstatt eine Antwort zu erhalten.
Also ärgere uns nicht und trette der -advusers-Liste nur bei, wenn du weißt, was du machst und du dich wie ein erfahrener MPlayer-Benutzer oder -Entwickler fühlst. Wenn du wirklich ein erfahrener Benutzer bist sollte es kein Problem für dich sein, dich anzumelden...