<?xml version="1.0" encoding="utf-8"?>
<!-- in sync with r19715 -->

<appendix id="bugreports">
  <title>Wie Fehler (Bugs) berichtet werden</title>
  <para>
    Gute Fehlerberichte sind ein sehr wertvoller Beitrag zur Entwicklung jedes
    Softwareprojekts. Aber genau wie das Schreiben guter Software erfordert das
    Anfertigen von Problemberichten etwas Arbeit. Bitte sei dir darüber im
    klaren, dass die meisten Entwickler sehr beschäftigt sind und eine unverschämt
    hohe Anzahl Mails bekommen. Verstehe daher, dass wir dir, obwohl dein Feedback für die
    Verbesserung von <application>MPlayer</application> sehr wichtig ist und geschätzt
    wird, <emphasis role="bold">alle</emphasis> Informationen, die wir fordern, zur
    Verfügung stellen und dass du die Anweisungen dieses Dokuments strikt befolgen musst.
  </para>

  <sect1 id="bugreports_security">
    <title>Berichte sicherheitsrelevante Fehler</title>
    <para>
      Falls du einen Exploit-fähigen Fehler gefunden hast und gern das richtige tun
      möchtest und uns diesen beseitigen lässt, bevor du ihn veröffentlichst, würden wir uns
      freuen, deinen Rat zur Sicherheit unter
      <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>
      zu erhalten.
      Füge dem Betreff bitte [SECURITY] oder [ADVISORY] hinzu.
      Stelle bitte sicher, dass dein Bericht eine vollständige und detaillierte Analyse des Fehlers enthält.
      Die Einsendung einer Lösung nehmen wir sehr gerne dankend an.
      Bitte zögere deinen Bericht nicht hinaus, um einen Proof-of-concept-Exploit zu schreiben, den
      kannst du in einer weiteren Mail schicken.
    </para>
  </sect1>

  <sect1 id="bugreports_fix">
    <title>Wie Fehler beseitigt werden</title>
    <para>
      Wenn du das Gefühl hast, dass du die nötigen Kenntnisse hast, bist du dazu eingeladen,
      dich selbst an der Lösung des Fehlers zu versuchen. Vielleicht hast du das schon?
      Bitte lies
      <ulink url="../../tech/patches.txt">dieses kurze Dokument</ulink>, um herauszufinden,
      wie dein Code Teil von <application>MPlayer</application> werden kann. Die Leute der
      Mailing-Liste
      <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">MPlayer-dev-eng</ulink>
      werden dir zur Seite stehen, wenn du Fragen hast.
    </para>
  </sect1>

  <sect1 id="bugreports_regression_test">
    <title>Wie Regressionstests mit Subversion durchgeführt werden</title>
    <para>
      Ein Problem, das manchmal auftreten kann ist &quot;es hat vorher funktioniert, jetzt
      tut es das nicht mehr...&quot;.
      Hier eine Schritt-für-Schritt-Verfahren, um herauszufinden, wann das Problem
      aufgetreten ist. Dies ist <emphasis role="bold">nichts</emphasis> für Gelegenheitsanwender.
    </para>
    <para>
      Zuerst musst du dir MPlayers Sourcenverzeichnis aus dem Subversion-Repository besorgen.
      Eine Anleitung hierzu kann unten auf
      <ulink url="http://www.mplayerhq.hu/dload.html">dieser Seite</ulink>
      gefunden werden.
    </para>
    <para>
      Du wirst dann im mplayer/-Verzeichnis ein Abbild des Subversion-Baums auf der Client-Seite
      haben.
      Führe jetzt ein Update für dieses Abbild auf das von dir gewünschte Datum durch:
<screen>cd mplayer/
svn update -r {"2004-08-23"}</screen>
      Das Datumsformat ist YYYY-MM-DD HH:MM:SS.
      Die Benutzung des Datumsformats stellt sicher, dass du in der Lage sein wirst,
      Patches anhand des Datums, an dem sie eingespielt wurden, extrahieren kannst, wie im
      <ulink url="http://mplayerhq.hu/pipermail/mplayer-cvslog/">MPlayer-cvslog-Archiv</ulink>.
    </para>
    <para>
      Gehe nun wie bei einem normalen Update vor:
<screen>./configure
make</screen>
    </para>
    <para>
      Falls ein Nicht-Programmierer dies liest: Der schnellste Weg, zu dem Punkt zu
      gelangen, bei dem das Problem auftrat ist eine Binärsuche - das bedeutet:
      Suche das Datum der Bruchstelle, indem du das Suchintervall wiederholt halbierst.
      Zum Beispiel, wenn das Problem 2003 auftrat, starte in der Mitte des Jahres und
      frage "Ist das Problem schon da?".
      Wenn ja, gehe zurück zum 1. April; wenn nicht, gehe zum 1. Oktober und so weiter.
    </para>
    <para>
      Wenn du viel Festplattenspeicher frei hast (eine vollständige Compilierung
      benötigt momentan 100 MB, und ungefähr 300-350 MB, wenn Debugging-Symbole mit
      dabei sind), kopiere vor einem Update die älteste Version, von der bekannt ist,
      dass sie funktioniert; das spart Zeit, wenn du zurückgehen musst.
      (Es ist normalerweise nicht nötig, 'make distclean' vor einer erneuten Compilierung
      einer früheren Version auszuführen. Wenn du also keine Backup-Kopie deines
      Original-Sourcebaums machst, wirst du alles neu compilieren müssen, wenn du beim
      gegenwärtigen wieder angekommen bist.)
    </para>
    <para>
      Wenn du den Tag gefunden hast, an dem das Problem auftrat, fahre mit der Suche mit
      dem mplayer-cvslog-Archiv (sortiert nach Datum) und einem genaueren svn update,
      welches Stunde, Minute und Sekunde beinhaltet, fort:
      <screen>svn update -r {"2004-08-23 15:17:25"}</screen>
      Dies wird es dir leicht machen, exakt den verursachenden Patch zu finden.
    </para>
    <para>
      Hast du den Patch gefunden, der Ursache des Problems ist, hast du fast gewonnen;
      Berichte darüber im
      <ulink url="http://bugzilla.mplayerhq.hu/">MPlayer Bugzilla</ulink>-System oder melde
      dich bei
      <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users">MPlayer-Users</ulink>
      an und mach es dort bekannt.
      Es besteht die Chance, dass der Autor einspringt und eine Lösung vorschlägt.
      Du kannst auch solange einen genauen Blick auf den Patch werfen, bis er genötigt ist,
      zu offenbaren, wo der Fehler steckt :-).
    </para>
  </sect1>

  <sect1 id="bugreports_report">
    <title>Wie Fehler berichtet werden</title>
    <para>
      Probiere vor allem zu allererst die letzte Subversion-Version von <application>MPlayer</application>,
      da dein Problem dort möglicherweise schon behoben ist. Die Entwicklung geht extrem schnell
      voran, die meisten Probleme in offiziellen Versionen werden innerhalb von Tagen oder sogar
      Stunden den Entwicklern mitgeteilt. Benutze daher bitte <emphasis role="bold">nur
        Subversion</emphasis> beim Berichten von Fehlern. Dies gilt auch für Binärpakete von
      <application>MPlayer</application>. Subversion-Anweisungen findest du am unteren Ende
      <ulink url="http://www.mplayerhq.hu/dload.html">dieser Seite</ulink> oder in der README.
      Wenn dies nicht hilft, ziehe die Liste <link linkend="bugs">bekannter Fehler</link> und den
      Rest der Dokumentation zu Rate. Ist dein Problem nicht bekannt oder kann es durch unsere
      Anweisungen nicht gelöst werden, dann teil uns den Fehler mit.
    </para>

    <para>
      Sende bitte keine Fehlerberichte privat an einzelne 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, auch wenn es sich um einen
      Fehler im <application>MPlayer</application>-Code handelt.
    </para>

    <para>
      Bitte beschreibe dein Problem so detailliert 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 Dateien oder
      Dateitypen? Tritt er nur bei einem Codec auf oder ist er davon unabhängig? Kannst
      du den Fehler mit allen Ausgabetreibern reproduzieren? Je mehr Informationen du zur
      Verfügung stellst, desto besser sind die Chancen, dass das Problem gelöst wird.
      Bitte vergiss nicht, auch die unten angeforderten wertvollen Informationen miteinzubeziehen.
      Ansonsten sind wir vermutlich nicht in der Lage, das Problem genau zu untersuchen.
    </para>

    <para>
      Eine exzellente und gut geschriebene Anleitung dazu, wie Fragen in öffentlichen Foren
      gestellt werden sollen, ist
      <ulink url="http://www.catb.org/~esr/faqs/smart-questions.html">How To Ask Questions
        The Smart Way</ulink> von <ulink url="http://www.catb.org/~esr/">Eric S. Raymond</ulink>.
      Es gibt noch einen namens
      <ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">How to Report Bugs Effectively</ulink>
      von
      <ulink url="http://www.chiark.greenend.org.uk/~sgtatham/">Simon Tatham</ulink>.
      Befolgst du diese Richtlinien, solltest du Hilfe bekommen können. Bitte hab aber Verständnis,
      dass wir alle den Mailinglisten freiwillig in unserer Freizeit folgen. Wir sind sehr
      beschäftigt und können nicht garantieren, dass du eine Lösung oder auch nur eine Antwort zu
      deinem Problem erhältst.
    </para>
  </sect1>

  <sect1 id="bugreports_where">
    <title>Wo Fehler berichtet werden sollen</title>
    <para>
      Melde dich bei der Mailingliste MPlayer-users an:
      <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users"/>
      und sende deinen Fehlerbericht an
      <ulink url="mailto:mplayer-users@mplayerhq.hu"/>, wo dieser diskutiert werden kann.
    </para>
    <para>
      Wenn du es bevorzugst, kannst du statt dessen auch unseren brandneuen
      <ulink url="http://bugzilla.mplayerhq.hu/">Bugzilla</ulink> verwenden.
    </para>
    <para>
      Die Sprache der Liste ist <emphasis role="bold">Englisch</emphasis>. Bitte
      befolge die Standard-
      <ulink url="http://www.ietf.org/rfc/rfc1855.txt">Netiquette-Richtlinien</ulink>
      und <emphasis role="bold">sende keine HTML-Mails</emphasis> an eine unserer
      Mailinglisten. Du wirst ignoriert oder ausgeschlossen werden. Wenn du nicht
      weißt, was eine HTML-Mail ist oder warum sie böse ist, lies dieses
      <ulink url="http://expita.com/nomime.html">feine Dokument</ulink>. Es erklärt
      alle Details und beinhaltet Instruktionen, wie man HTML abschalten kann. Beachte
      auch, dass wir keine Kopien (CC, carbon-copy) verschicken. Es ist daher eine
      gute Sache, sich anzumelden, um auch wirklich eine Antwort zu erhalten.
    </para>
  </sect1>

  <sect1 id="bugreports_what">
    <title>Was berichtet werden soll</title>
    <para>
      Du wirst wahrscheinlich Logdateien, Konfigurationsinformationen und Beispieldateien
      in deinen Fehlerbericht aufnehmen müssen. Werden einige von ihnen ziemlich groß,
      ist es besser, wenn du sie auf unseren
      <ulink url="ftp://upload.mplayerhq.hu/MPlayer/incoming/">FTP-Server</ulink>
      hochlädst, und zwar in komprimierter Form (gzip und bzip2 bevorzugt). Gib dann in deinem
      Fehlerbericht nur den Pfad- und den Dateinamen an. Unsere Mailinglisten haben ein
      Nachrichten-Größenlimit von 80k, wenn du etwas größeres hast, musst du es
      komprimieren und hochladen.
    </para>

    <sect2 id="bugreports_system">
      <title>Systeminformationen</title>
      <para>
        <itemizedlist>
          <listitem>
            <para>
              Deine Linuxdistribution, Betriebssystem und Version, z.B.:
              <itemizedlist>
                <listitem>
                  <para>Red Hat 7.1</para>
                </listitem>
                <listitem>
                  <para>Slackware 7.0 + Entwicklerpakete von 7.1 ...</para>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>
              Kernelversion:
              <screen>uname -a</screen>
            </para>
          </listitem>
          <listitem>
            <para>
              libc-Version:
              <screen>ls -l /lib/libc[.-]*</screen>
            </para>
          </listitem>
          <listitem>
            <para>
              gcc- und ld-Versionen:
<screen>gcc -v
ld -v</screen>
            </para>
          </listitem>
          <listitem>
            <para>
              binutils-Version:
              <screen>as --version</screen>
            </para>
          </listitem>
          <listitem>
            <para>
              Wenn du Probleme mit dem Vollbildmodus hast:
              <itemizedlist>
                <listitem>
                  <para>Window-Manager-Typ und Version</para>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>
              Wenn du Probleme mit XVIDIX hast:
              <itemizedlist>
                <listitem>
                  <para>Farbtiefe von X:
                    <screen>xdpyinfo | grep &quot;depth of root&quot;</screen>
                  </para>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>
              Wenn nur die GUI fehlerhaft ist:
              <itemizedlist>
                <listitem><para>GTK-Version</para></listitem>
                <listitem><para>GLIB-Version</para></listitem>
                <listitem><para>libpng-Version</para></listitem>
                <listitem><para>GUI-Situation, in welcher der Fehler auftritt</para></listitem>
              </itemizedlist>
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </sect2>

    <sect2 id="bugreports_hardware">
      <title>Hardware und Treiber</title>
      <para>
        <itemizedlist>
          <listitem>
            <para>
              CPU-Info (funktioniert nur unter Linux):
              <screen>cat /proc/cpuinfo</screen>
            </para>
          </listitem>
          <listitem>
            <para>
              Videokartenhersteller und -modell, z.B.:
              <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>
              Videotreibertyp und -version, .z.B.:
              <itemizedlist>
                <listitem><para>eingebauter Treiber von X</para></listitem>
                <listitem><para>nVidia 0.9.623</para></listitem>
                <listitem><para>Utah-GLX CVS 2001-02-17</para></listitem>
                <listitem><para>DRI von X 4.0.3</para></listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>
              Soundkartentyp und -treiber, z.B.:
              <itemizedlist>
                <listitem><para>Creative SBLive! Gold mit OSS-Treiber von oss.creative.com</para></listitem>
                <listitem><para>Creative SB16 mit Kernel-OSS-Treibern</para></listitem>
                <listitem><para>GUS PnP mit OSS-Emulation von ALSA</para></listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>
              Füge bei Linuxsystemen im Zweifel die Ausgabe von <command>lspci -vv</command> bei.
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </sect2>

    <sect2 id="bugreports_configure">
      <title>Configure-Probleme</title>
      <para>
        Wenn du Fehlermeldungen beim Aufruf von <command>./configure</command> bekommst oder
        die automatische Erkennung von etwas fehlschlägt, so lies <filename>configure.log</filename>.
        Du könntest dort die Antwort finden, zum Beispiel mehrere Versionen derselben Bibliothek,
        die gemischt auf deinem System vorliegen, oder du hast vergessen, das Entwicklerpaket
        (die mit dem Suffix -dev) zu installieren. Wenn du denkst, dass es sich um einen
        Fehler handelt, binde <filename>configure.log</filename> in deinen Fehlerbericht ein.
      </para>
    </sect2>

    <sect2 id="bugreports_compilation">
      <title>Compilierungsprobleme</title>
      <para>
        Bitte füge diese Dateien an:
        <itemizedlist>
          <listitem><para>config.h</para></listitem>
          <listitem><para>config.mak</para></listitem>
        </itemizedlist>
      </para>
    </sect2>

    <sect2 id="bugreports_playback">
      <title>Wiedergabeprobleme</title>
      <para>
        Bitte füge die Ausgabe von <application>MPlayer</application> im ausführlichen Modus
        bei Level 1 an, denke aber daran, <emphasis role="bold">die Ausgabe nicht zu kürzen</emphasis>,
        wenn du sie in deine Mail einfügst. Die Entwickler benötigen alle Ausgaben, um das Problem
        angemessen zu untersuchen. Du kannst die Ausgabe folgendermaßen in eine Datei ausgeben:
        <screen>mplayer -v <replaceable>Optionen</replaceable> <replaceable>Dateiname</replaceable> &gt; mplayer.log 2&gt;&amp;1</screen>
      </para>

      <para>
        Wenn dein Problem speziell mit einer oder mehreren Dateien zu tun hat, lade diese bitte hoch nach:
        <ulink url="ftp://upload.mplayerhq.hu/MPlayer/incoming/"/>
      </para>

      <para>
        Lade bitte auch eine kleine Textdatei hoch, die denselben Basisnamen wie deine Datei
        hat, mit der Erweiterung .txt. Beschreibe dort das Problem, das du mit dieser speziellen
        Datei hast und gib sowohl deine Emailadresse als auch die Ausgabe von
        <application>MPlayer</application> im ausführlichen Modus bei Level 1 an. Normalerweise
        reichen die ersten 1-5 MB einer Datei aus, um das Problem zu reproduzieren. Um ganz sicher
        zu gehen, bitten wir dich, folgendes zu tun:
        <screen>dd if=<replaceable>deine-datei</replaceable> of=<replaceable>kleine-datei</replaceable> bs=1024k count=5</screen>
        Dies wird die ersten fünf Megabyte von '<emphasis role="bold">deine-datei</emphasis>' nehmen
        und nach '<emphasis role="bold">kleine-datei</emphasis>' schreiben. Probiere es dann erneut
        mit dieser kleinen Datei, und wenn der Fehler noch immer auftritt, ist dieses Beispiel für uns
        ausreichend.
        Bitte sende <emphasis role="bold">niemals</emphasis> solche Dateien via Mail!
        Lade sie hoch und schicke nur den Pfad/Dateinamen der Datei auf dem FTP-Server. Ist
        die Datei im Netz verfügbar, reicht es, die <emphasis role="bold">exakte</emphasis>
        URL zu schicken.
      </para>
    </sect2>

    <sect2 id="bugreports_crash">
      <title>Abstürze</title>
      <para>
        Du musst <application>MPlayer</application> in <command>gdb</command> aufrufen und
        uns die komplette Ausgabe schicken, oder du kannst, wenn du ein <filename>core</filename>-Dump
        des Absturzes hast, nützliche Informationen aus der Core-Datei extrahieren,
        und zwar folgendermaßen:
      </para>

      <sect3 id="bugreports_debug">
        <title>Wie man Informationen eines reproduzierbaren Absturzes erhält</title>
        <para>
          Compiliere <application>MPlayer</application> neu mit Debugging-Code aktiviert:
<screen>./configure --enable-debug=3
make</screen>
          und rufe dann <application>MPlayer</application> innerhalb gdb auf mit:
          <screen>gdb ./mplayer</screen>
          Du befindest dich nun innerhalb gdb. Gib ein
          <screen>run -v <replaceable>Optionen-an-mplayer</replaceable> <replaceable>Dateiname</replaceable></screen>
          und reproduziere den Absturz. Sobald du das getan hast, wird gdb zur Eingabeaufforderung
          zurückkehren, wo du folgendes eingeben musst:
<screen>bt
disass $pc-32 $pc+32
info all-registers</screen>
        </para>
      </sect3>

      <sect3 id="bugreports_core">
        <title>Wie man aussagekräftige Informationen aus einem Core-Dump extrahiert</title>
        <para>
          Erzeuge die folgende Befehlsdatei:
<screen>bt
disass $pc-32 $pc+32
info all-registers</screen>
          Führe dann einfach folgenden Befehl aus:
          <screen>gdb mplayer --core=core -batch --command=<replaceable>Kommando_Datei</replaceable> &gt; mplayer.bug</screen>
        </para>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="bugreports_advusers">
    <title>Ich weiß, was ich tue...</title>
    <para>
      Wenn du einen Fehlerbericht wie oben beschrieben geschrieben hast und du dir sicher
      bist, dass es ein Bug in <application>MPlayer</application> und nicht ein Problem mit dem
      Compiler oder eine defekte Datei ist, du die Dokumentation gelesen hast und keine Lösungen
      finden konntest und deine Soundtreiber OK sind, dann kannst du auch der
      mplayer-advusers-Mailingliste beitreten und dort deine Fehlerberichte einsenden. Du wirst dort
      schnellere und bessere Antworten erhalten.
    </para>

    <para>
      Aber sei gewarnt: Wenn du Anfängerfragen stellst oder Fragen, die in dieser Anleitung
      bereits beantwortet werden, wirst du ignoriert oder angemeckert, anstatt eine Antwort
      zu erhalten. Also ärgere uns nicht und trete der -advusers-Liste nur bei, wenn du weißt,
      was du tust und du dich für einen erfahrenen MPlayer-Nutzer oder -Entwickler hältst.
      Erfüllst du diese Kriterien, sollte es kein Problem für dich sein, dich anzumelden...
    </para>
  </sect1>

</appendix>
