Fehler in mod_auth_mysql behoben (svn could not read chunk size)

2009-07-21

subversion_logo-384x332Nach einer sehr aufwändigen Fehlersuche und zahlreichen false positives habe ich endlich meinen Fehler mit Subversion behoben.

Die Fehlerbeschreibung

Beim Checkout, Update oder Export aus Subversion kamen ständig Fehlermeldungen:

svn: REPORT von »/svn/!svn/vcc/default«: Lesefehler bei Ermittlung der Blockgröße: connection was closed by server

oder

svn: REPORT von »/svn/!svn/vcc/default«: Could not read chunk size: connection was closed by server.

Das Problem ist (ungefähr) mod_auth_mysql in Zusammenhang mit einem 64bit-String. Auf diese Idee kam ich, nachdem ich ein Backtrace des Fehlers im Apache2 durchgeführt habe. Sehr spannende Sache mal so tief in die Eingeweide des Systems hinab zu blicken. Schlussendlich konnte das Problem aber identifiziert und behoben werden.

Hier eine Anleitung wie man den Fehler von mod_auth_mysql für Apache2.2 auf 64Bit-Systemen behebt (Anregungen von Stephane Chazelas):

  1. Aktuelle Sourcen von libapache2-mod-auth-mysql herunterladen und bauen lassen
    apt-get -b source libapache2-mod-auth-mysql
  2. sollten hierbei Fehler kommen: müssen folgende Pakete noch installiert werden
    apt-get install dpkg-dev debhelper dpatch apache2-threaded-dev
  3. jetzt ins Quellverzeichnis gehen und den Patch anwenden
    (einfach in der Datei mod_auth_mysql.c die Zeile mit dem + einfügen)

    --- mod_auth_mysql.c~ 2009-01-19 14:57:14.717958623 +0000
    +++ mod_auth_mysql.c 2009-01-19 14:54:00.947332133 +0000
    @@ -49,6 +49,7 @@
    #ifdef APACHE2
    #include "http_request.h"   /* for ap_hook_(check_user_id | auth_checker)*/
    #include <apr_general .h>
    +#include <apr_strings .h>
    #include <apr_md5 .h>
    #include <apr_sha1 .h>
    #else

  4. Nun nochmal compilieren
    ./configure --disable-apache13 --enable-apache2 && make
  5. Apache stoppen /etc/init.d/apache2 stop
  6. zuletzt die alte Datei ersetzen
    cp ./apache2_mod_auth_mysql.so /usr/lib/apache2/modules/mod_auth_mysql.so
  7. Apache wieder starten und glücklich werden

Das ganze nachzuvollziehen hat mich bestimmt 2 Tage Arbeit gekostet, aber jetzt funktioniert es wenigstens alles.

  1. […] aus Subversion gab es unerklärliche Verbindungsabbrüche. Nach einiger Recherche konnte der Fehler in unserer Apache2-Mysql-Authentifizierung gefunden und behoben […]

  2. […] Nun gab es doch noch eine Lösung für das Problem mit chunked strem ended unexpectedly. […]

  3. mee2 - September 17th, 2009 at 16:48

    VIELEN Dank!

  4. sim4000 - Februar 23rd, 2010 at 01:34

    Vielen Dank für diesen Artikel.
    Hab da schon Stunden vor gesessen um das nachzuvollziehen.

    Hast Du das mal den zuständigen Entwicklern im Bugtracker gemeldet?
    Lg, sim4000.

  5. Bastian - Februar 23rd, 2010 at 09:01

    Die Info hatte ich ja aus diversen Bugtrackern. Mittlerweile bin ich aber auf mod_auth_db umgestiegen. das ist wesentlich ressourcenschonender.