Tag: apache2

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

Juli 21st, 2009

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.