[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Spass mit gdbm files beim Umzug von i386 auf amd64


Hi zusammen,

nur damit es bei google jemand findet. Ich habe hypermail (das ist
dieses praehistorische Tool, mit dem der Inhalt *dieser* Mailingliste
unter http://lists.uugrn.org/uugrn/ archiviert wird) auf den neuen
Server gepackt und hatte dort zunaechst arge Probleme, weil "hypermail"
beim Zugriff auf seinen Index mit 100% CPU losgelaufen ist so lange bis
procmail das tool wegen timeout gekillt hat. Ziemlich ekliges Phaenomen.

Ursachenforschung.

Intern basiert das Tool auf einem index-File, mit dem das Archiv
inkrementell erweitert wird:

.hm2index: GNU dbm 1.x or ndbm database, little endian

Nach dem Umzug von einem i386 System auf ein amd64 System klappte der
Zugriff auf das file nicht mehr. 

(hier amd64):
/usr/local/bin/hypermail:
        libgdbm.so.4 => /usr/local/lib/libgdbm.so.4 (0x80085e000)
        libm.so.5 => /lib/libm.so.5 (0x800a65000)
        libpcre.so.3 => /usr/local/lib/libpcre.so.3 (0x800c86000)
        libc.so.7 => /lib/libc.so.7 (0x800ee4000)
        libthr.so.3 => /lib/libthr.so.3 (0x801237000)


Das Package, aus dem /usr/local/lib/libgdbm.so.4 herausgefallen ist,
enthaelt auch ein tool namens "testgdbm". Damit kann man einfache
operationen auf diesem dbm-File ausfuehren, zB

---------------------------------------------
$ testgdbm -r -g /data/www/lists.uugrn.org/htdocs/uugrn/.hm2index.neu 

Welcome to the gdbm test program.  Type ? for help.

testgdbm> c
There are 16391 items in the database.
---------------------------------------------

Das Problem: Greift man damit auf ein i386-file zu, dann passiert
folgendes:
---------------------------------------------
$ testgdbm -r -g /old/data/www/lists.uugrn.org/htdocs/uugrn/.hm2index     

Welcome to the gdbm test program.  Type ? for help.

testgdbm> c
Segmentation fault: 11 (core dumped)
---------------------------------------------

Das ist natuerlich ziemlicher Schrott!!


Gluecklicherweise: Das testgdbm-Tool auf einem i386-System kann die alte
Datei noch oeffnen und *exportieren*. Dabei wird so eine Art Flatfile-Dump
erzeugt. Dieser laesst sich dann auf dem amd64-System in eine neue
(frisch angelegte) Datei reimportieren:

---------------------------------------------------------
testgdbm -n -g /data/www/lists.uugrn.org/htdocs/uugrn/.hm2index.neu

Welcome to the gdbm test program.  Type ? for help.

testgdbm> i /tmp/foo.0  
testgdbm> c
There are 16391 items in the database.
testgdbm> ^D
---------------------------------------------------------

Und das war schon die ganze Loesung, wie sich das hypermail-Archiv von
i386 auf amd64 uebertragen liess. Ganz einfach, wenn man mal drauf kommt.

Vermutlich sind wir die allerletzten, die noch hypermail einsetzen und
niemand wird sich je dafuer interessieren. Aber vielleicht gibt es noch
andere Schrott-Software, die architekturabhaengige gdbm-Files einsetzen
und hierfuer sollte obiges Verfahren dann analog funktionieren.

Viele Gruesse
Raphael
-- 
Raphael Eiselstein <rabe@xxxxxxxxx>               http://rabe.uugrn.org/
xmpp:freibyter@xxxxxx  | https://www.xing.com/profile/Raphael_Eiselstein   
GnuPG:                E7B2 1D66 3AF2 EDC7 9828  6D7A 9CDA 3E7B 10CA 9F2D
.........|.........|.........|.........|.........|.........|.........|..



-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/