xppfatal bei Db-Funktionen [Erledigt]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

xppfatal bei Db-Funktionen [Erledigt]

Beitragvon Jan » Fr, 25. Nov 2016 13:02

Moin,

ich kämpfe gerade mit einem merkwürdigen Fehler. Ich arbeite einen größeren String ab (180 MB groß) und speichere die Bestandteile in einer dbf. Dabei kommt es reproduzierbar immer an der gleichen Stelle zu einem Absturz. Es ist ein Satz abgearbeitet, ein neuer soll appended werden. Sowohl ein DbAppend() als auch ein DbRUnLock() als auch andere Db-Funktionen bewirken den Absturz. Und das selbst dann, wenn ich diese DB-Funktion in eine Sequence-Schleife lege. Klar, das gibt ja keinen Laufzeitfehler sondern einen fatalen.

Die xppfatal beginnt so:

FATAL ERROR LOG
in function: atmStartGCThread(void*)
SYS Thread-ID: 652
Module: ATM
Error Codes: EH: 5 Sub: -1073741819(c0000005) OS: 0 XPP: 41
Call Stack of Thread 1 (608):


Kann jemand mit erzählen, was da schief läuft?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Manfred » Fr, 25. Nov 2016 13:34

hast Du Dir das mal im Debugger angeschaut, was da passiert?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16254
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Fr, 25. Nov 2016 13:58

Hallo Manfred,

ja natürlich. Ich stehe auf der Zeile mit dem DbAppend() (oder einer beliebigen anderen DB-Funktion), drücke F8, und schwupp, ist das Programm weg. Immer nach exakt dem gleichen Satz 6.972. 6.973 läßt sich nicht anlegen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Manfred » Fr, 25. Nov 2016 14:00

ah, wer lesen kann ist klar im Vorteil.
Das kommt mir aber irgendwie bekannt vor. Ich meine sowas hatte ich auch schon mal.
rein zur Vorsicht, Index ist ok?
Schon mal versucht die besagte Menge an Leersätzen anzulegen, ob es dann auch knallt?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16254
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel

Re: xppfatal bei Db-Funktionen

Beitragvon flanelli » Fr, 25. Nov 2016 14:31

Hallo Jan,
es wird dir nur ein geringer Trost sein aber solche Abstürze erlebe ich immer wieder mal z.B. bei dbexport()
und es läßt sich nicht wirklich eruieren wo der Hund begraben ist ( vermutlich wohl in Xbase selbst )
Das einzige was bei mir ein wenig Abhilfe geschaffen hat war ein sleep(10) vor den Aufruf an zu stellen aber
zu 100% hat das auch nicht gewirkt.

Der Fehlercode bringt jedenfalls nie einen wirklichen Aufschluß, der ist mehr oder weniger bei fast dallen
Fatal-Abstürzen der gleiche - z.B. bekam ich den auch beim Ausdruck einer 8BPP-Grafik auf einem
Thermolinedrucker und da war die Ursache ein Speicherüberlauf am Drucker.

Lg, Marcel
Ahoile aus dem Süden
flanelli
Cut&Paste-Entwickler
Cut&Paste-Entwickler
 
Beiträge: 26
Registriert: Di, 11. Mai 2010 16:27

Re: xppfatal bei Db-Funktionen

Beitragvon AUGE_OHR » Fr, 25. Nov 2016 20:11

du lässt dem CG zu wenig Zeit ...
ATM = Atom Manager (starts Garbage Collector?)
Separate Thread, may have different Thread ID in XppFatal.logs
* XppFatal Message: "Function: atmStartGCThread(void*)"
- Error Codes: "EH: 5"/"Sub: -1073741819(c0000005)"/"XPP: 41"
es kann helfen wenn du die Xbase++ "Optimierungen" wie
Code: Alles auswählen
SET OPTIMZE OFF
SET RUSHMORE OFF
setzt
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Fr, 25. Nov 2016 20:50

Hallo Jimmy,

hilft nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon AUGE_OHR » Fr, 25. Nov 2016 21:02

Jan hat geschrieben:hilft nicht.
du hast die DBF / Index NEU aufgebaut ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Fr, 25. Nov 2016 21:06

Die wird IMMER vorher komplett neu aufgebaut. Und die Inzidee sind korrekt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon BIK » Fr, 25. Nov 2016 23:57

@Jan
Das ist ein Dateisystemfehler bei Win10

Goole mal unter '1073741819' - Eventuell hilft dir das weiter.

Gruß,
Bernhard
BIK
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 66
Registriert: Di, 23. Aug 2011 14:34

Re: xppfatal bei Db-Funktionen

Beitragvon AUGE_OHR » Sa, 26. Nov 2016 2:03

BIK hat geschrieben:Das ist ein Dateisystemfehler bei Win10
es handelt sich hier um XppFatal.LOG, also einer Fehlermeldung von Xbase++ und nicht vom Windows System.
genau der ATM Fehler wurde im Zitat erwähnt.
Error Codes: "EH: 5"/"Sub: -1073741819(c0000005)"/"XPP: 41"


@Jan
es ist anzunehmen das der CG "keine Zeit" findet ... SLEEP() könnte helfen.
nun findet das ganze wohl auch im Thread statt ... der braucht auch "seine Zeit"
jede geöffnete DBF "benötigt Zeit" ... alles schliessen was nicht gebraucht wird.

Frage : verwendest du DbRegisterClient() ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 9:41

Bernhard,

das kann hier nicht sein - der Laptop, auf dem ich da gearbeitet habe, hat noch Windows 7 drauf.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 9:42

Jimmy,

Sleep hatte ich gestern acuh schon drni. Hat aber ebenfalls nichts gebracht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon BIK » Sa, 26. Nov 2016 10:12

Meine Vermutung es könnte etwas mit Win10 zu tun haben begründet sich aus der Tatsache dass ich auf einem älteren HP6830s der nach dem Upate auf Win10 eben dieser Fehler hatte.
Aufgrund einer sowieso anstehenden Neuanschaffung haben wir dieses Problem dann nicht mehr weiter verfolgt.
Ist der Fehler nur auf diesem Rechner oder kommt der auch an andereren Geräten zum vorschein?
Ich meine mich zu erinnern, dass wir auch den Speicher in Verdacht hatten. Wie viel Hauptspeicher hat der Laptop?

Gruß,
Bernhard
BIK
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 66
Registriert: Di, 23. Aug 2011 14:34

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 10:17

Ich denke, ich bin da einen Schritt weiter. Der Punkt ist, daß das eine recht große Datei ist, die ich importieren muß. Sowas ist extrem ungewöhnlich für emine Software. Der Kunde hatte die in UTF-8 vorliegen, hat die aber nach ANSI konvertiert (keine Ahnung, wie, ihc glaube mit einem normalen Editor). Und diese konvertierte Datei macht jetzt Probleme. Das könnte daher kommen, das der gute Mann aus Luxemburg kommt, die haben eine andere ANSI als wir hier.

Darauf gekommen bin ich, weil in der dbf merkwürdige Sonderzeichen stehen. Die im Original französische Buchstaben sind.

Und weil ich mir mal eine andere übergroße Musterdatei besorgt habe, die aus den USA kommt und damit für mich einen korrekten Zeichensatz beinhaltet. Damit klappt das nun wiederum einwandfrei.

Stellt sich mir nur die Frage: Warum zum Donnerwetter kann eine Datei mit einem nicht passenden ANSI-Zeichensatz alle DB-Fuktionen blockieren? Selbst ein DbCloseAll() führte zu einem sofortigen Absturz. Und in knapp der Hälfte aller Fälle ist das so massiv, das nicht mal eine xppfatal geschrieben werden konnte.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 10:19

Bernhard,

das ist ein Windows 7 Ultimate 64 Bit mit 8 GB RAM. Wobei die zu importierende Datei 180 MB groß ist, die dbf nach dem Absturz ca. 14 MB groß ist. Also alles nicht weltbewegend.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon BIK » Sa, 26. Nov 2016 11:07

Jan hat geschrieben:Stellt sich mir nur die Frage: Warum zum Donnerwetter kann eine Datei mit einem nicht passenden ANSI-Zeichensatz alle DB-Fuktionen blockieren? Selbst ein DbCloseAll() führte zu einem sofortigen Absturz. Und in knapp der Hälfte aller Fälle ist das so massiv, das nicht mal eine xppfatal geschrieben werden konnte.
Jan

Das heisst, wenn du die Zeichen mit STRTRAN raus nimmst läuft das Programm?
BIK
UDF-Programmierer
UDF-Programmierer
 
Beiträge: 66
Registriert: Di, 23. Aug 2011 14:34

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 11:13

Bernhard,

nein. Es läuft, wenn ich eine komplett andere Datei nehme mit US-Zeichensatz, aber mit einer ähnlichen Größe (Original ca. 9,3 Mio. Zeilen, US-Datei ca. 7,8 Mio. Zeilen).

Ich habe aber bei meinem Kunden seine Datei im Original, also in UTF-8, angefordert. Die werde ich dann mal selber konvertieren und schauen, was dann dabei heraus kommt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 12:10

Na super.

Ich habe jetzt die Original-Datei von eminem Kunden. Und konvertere die während des Importes selber nach ANSI. Und trotzdem stirbt der immer noch an exakt der gleichen Stelle.

Einziger Unterschied: In der dbf stehen jetzt die korrekten französischen Buchstaben, nicht mehr diese seltsamen Ersetzungen.

Da muß in dieser Datei also noch irgend was anderes drin sein, was stört.

Seltsam ist einfach nur: Im ersten Durchlauf komme ich genau bis Datenatz 6.972. Lasse ich den Import dann noch einmal auf die gleiche dbf laufen, dann stirbt der nicht nach Satz (6.972 * 2) = 13.944, sondern erst in 66.482.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Koverhage » Sa, 26. Nov 2016 13:58

Dann würde ich mal mit einem Hex-Editor schauen, was an der Stelle für Zeichen stehen.
Du verarbeitest einen 180MB großen String im Speicher ?
Eventuell direkt aus einer Datei Satzweise( wie Du es benötigst) einlesen
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1904
Registriert: Fr, 23. Dez 2005 9:00
Wohnort: Aalen

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 14:14

Hallo,

inzwischen bin ich einen Schritt weiter. Zur Info: Die eingelesene Datei ist eine reine Textdatei, in der nach einer festen Struktur Kennzeichen für ede Zeile eingebaut sind die angeben, wie der Text in dieser Zeile zu bewerten ist. Anhand dieser Kennzeichen werte ich die Daten aus und schreibe sie in die verschiedenen Felder meiner dbf.

Ich bin gerade dabei, das Schritt für Schritt aufzubohren. Im ersten Durchlauf habe ich alles auskommentiert, was nicht zur eindeutigen Identifizierung notwendig ist. Das ist sauber durch alle Zeilen durchgelaufen. Zur Zeit läuft der nächste Versuch, in dem ich ca. die Hälfte aller Kennzeichen freigegeben habe. Der sieht ebenfalls seht gut aus, ich bin da schon bei ca. der Hälfte der Zeilen durch. Was ich in der Vollversion nie geschafft habe, da war immer schon nach 2 oder 3 % Schluß.

Ich taste mich da also Scheibchenweise ran. Und hoffe so, den auslösenden "Fehler" identifizieren zu können.

Mich irritiert aber immer noch, warum ein Fehler in einer Textdatei eine dbf zum Totalabsturz bringen kann. Total irre!

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Jan » Sa, 26. Nov 2016 14:18

Hallo Klaus,

das Einlesen der großen Datei dürfte nicht das Problem sein. Ich hatte ja den Test mit der US-Datei gemacht, die war fast genau so groß, und die lief sauber durch.

Der Hex-Editor hilft mir ja leider nicht. Denn die Daten für den dbf-Satz vor dem Absturz werden noch korrekt ausgelesen. Oder naja, vielleicht auch nicht. Denn wenn schon ein DbCloseArea() nach diesem Satz das Programm ohne xppfatal abstürzen lassen, dann muß sich da schon ganz schön was wild verknotet haben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11774
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle

Re: xppfatal bei Db-Funktionen

Beitragvon Koverhage » Sa, 26. Nov 2016 14:28

Jan,

das Einlesen selbst nicht. Aber die Weiterverarbeitung. Ich meine wir hätten das Thema Speicher / Abstürze schon mal
mit Riesenstrings und substr.
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1904
Registriert: Fr, 23. Dez 2005 9:00
Wohnort: Aalen

Re: xppfatal bei Db-Funktionen

Beitragvon brandelh » Sa, 26. Nov 2016 23:16

Ich lese mit meinen Importroutinen 350 MB Dateien ein, die auf 600.000 Sätze verteilt werden ... es sollte also gehen.
XPPFATAL sogar mit Fehlerfunktion, das würde ich an Alaska melden mit Beispiel !
Die baust die Indexe vorher auf ... wenn du den Index in der Zieldatei nicht beim Import benötigtst, würde ich einlesen ohne index und danach neu aufbauen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: xppfatal bei Db-Funktionen

Beitragvon AUGE_OHR » So, 27. Nov 2016 0:12

Jan hat geschrieben:Und konvertere die während des Importes selber nach ANSI.
du könntest testweise erst den Import machen und wenn der durchläuft dann die Konvertierung.
du könntest die Import Routine mal "auskoppeln" und als kleines Stand-Alone testen ob es einen Unterschied macht.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10281
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Nächste

Zurück zu Daten und Tabellen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron