[Allegro] index-problem

Thomas Berger ThB at Gymel.com
Do Nov 9 09:42:09 CET 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Herr Lehmann,

> eine datenbank wird mit einem index indexiert, welcher sauber bei allen
> anderen mir bekannten datenbanken durchläuft. ausgerechnet bei einer
> datenbank stürzt er ab:
> 
> über windows xp gibts noch folgende fehlermeldung:
> 
> 16bit dos teilsystem:
> menü allegro
> die ntvdm-cpu hat einen ungültigenbefehl entdeckt.
> adresse: ..... -> schliessen
> 
> 
> wxp-index.exe zeigt auf einen datensatz hin, der "unsauber" ist.

entweder dies, oder es gibt im Laufe der Verarbeitung einen
Anwendervariablen-Ueberlauf: Also im Prinzip unsauberer programmierte
Indexparameter die bei der vorliegenden Konstellation von
Datensaetzen sich zu einem Absturz aufschaukeln.


> gibt es keine andere(!) chance ihn zu finden, als folgende werkzeuge zu
> benutzen:
> sniffer
> analyze
> sneezer
> 

analyze gewiss nicht.

sniffer geht von korrekten Saetzen aus und findet daher besonders
die groben Fehler nicht. sneezer geht von inkorrekten Saetzen aus,
findet hingegen Probleme innerhalb der Saetze (ungueltige Kategorien
etwa) nicht.

in der naechsten Mail zaehlen Sie einige auch mir bekannte Probleme
in Datensaetzen auf:

> stark in erinnerung sind mir einige möglichkeiten:
> -am anfang bei #00
> -bei hierarchischen datensätzen geht die #01-konstruktion oft kaputt
> -solche datensätze werden oft getrennt abgespeichert

soweit ich mich erinnere, sind Datensaetze, die quasi direkt auf
Hierarchiebene 2 starten, sehr starke Absturzkandidaten.

Einen Absturz bekommen Sie auch, wenn Sie Kategorien mit mehr als
ca 4000 Zeichen haben, selbst dann, wenn es harmlos aussieht
(etwa Kategorienstatistik:

#t{s1}
#cc y0 e3
#t{s4}

Alleine schon die Verschiebung der Startposition fuehrt wohl intern
zum Anfertigen einer Kopie der Kategorie in einen Buffer, der zu klein
ist: Bumm

Wie weiter vorzugehen ist, haengt stark davon ab, ob Ihr Absturz bei
der ersten oder der zweiten Phase der Indexierung passiert.

Man kann nun z.B. hingehen und den Bereich, in dem man das Problem
vermutet, mit i-1.apr exportieren, aus ein paar Dutzend Kopien
dieser Grunddatei eine neue Datenbank aufbauen und schauen, ob sich
das Problem vererbt. Aufwendiger ist die ultima ratio zum Test auf
Parametrierfehler: Die .api leicht umarbeiten, so dass eine .apr daraus
wird und die Angelegenheit mit SRCH.EXE statt INDEX.EXE durchspielen.
Wenn das Problem bleibt, kann man sich vor jedem Datensatz noch die
Inhalte aller Anwendervariablen ausspucken lassen und sieht dann oft
kurz vor dem Absturz in der Ausgabedatei das sich aufbauende Problem.

viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFUunhhKFJT0F1FsoRAvHyAJ9HM4gLG5Q1ozWoQW+OztkHLEIn+gCfRPj1
vdvcgYl6XIER4YvS4pql/Lg=
=KYHS
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Allegro