INDEXKEY() / OrdKey() verursachen Absturz [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

INDEXKEY() / OrdKey() verursachen Absturz [ERLEDIGT]

Beitrag von Benz »

Hi, ich habe ein Programm, welches
durch eine XML-Datei geht und anhand der dort vorhandenen Informationen folgendes tut:
Nach String A aus der XML-Datei wird per Index eine Datenbank sortiert.
Dann wird überprüft ob Spalte A (hat nichts mit String A zu tun) in der Zeile in der String A steht ncoh frei ist. Wenn ja wird String B aus der XML-Datei dort eingetragen, wenn nicht wird versuhct, ob Spalte B frei ist und dort String B eingetragen und dasselbe noch mit Spalte C.

Das funktioniert alles problemlos bis zu einem gewissen Punkt:
Nach ca. 1100 dieser Überprüfungen für XML-Datei 1 auf Datenbank 1 und weiteren 1058 für XML-Datei 2 auf Datenbank 2 (die beiden Operationen werden automatisch direkt hintereinander ausgeführt) bricht das Programm genau an dieser Stelle ab:

Code: Alles auswählen

  IF operationsart == 'GET'

* DIE FOLGENDE ZEILE WIRD 1100 + 1058 Mal ausgeführt, beim 1059. Mal wird sie nicht mehr ausgeführt und das Programm schließt sich einfach.
    IF OrdKey()==''

       memxystatus=3

    ELSE

       SEEK  memkey

       IF .NOT. FOUND ()

         memxystatus = 17

       ELSE

         memxystatus = 0

       ENDIF
    ENDIF

  ENDIF
hat jemand eine Idee dazu? Gibt es vielleicht eine Arbeitsspeicherbeschränkung für derartige Operationen?
Zuletzt geändert von Benz am Mo, 06. Okt 2014 11:39, insgesamt 1-mal geändert.
DelUser01

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von DelUser01 »

Hallo "Benz"

hast Du keinerlei Error-Log dazu?
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von Benz »

FATAL ERROR LOG
Stack Overflow
SYS Thread-ID: 524
Module: EH
Error Codes: EH: 12 Sub: 0(0) OS: 0 XPP: 16
Call Stack of Thread 1 (524):
DBMANAGE(511)
@CXSD_TO_DBF_INTERPRETER@I@LABELS_TO_DBF_LABELID_EXECUTE(287)
(B)@CXSD_TO_DBF_INTERPRETER@I@LABELS_TO_DBF(268)
@CXSD_TO_DBF_INTERPRETER@I@LABELS_TO_DBF(256)
@CXSD_TO_DBF_INTERPRETER@I@START(17)
PROC_INTERPRETATION_STARTEN(195)
(B)Main(127)
@XBPPUSHBUTTON@I@HANDLEEVENT(964)
MAIN(78)
Call Stack of GUI Thread (712):
File: X:\xsd_interpreter\0001.0006\1_xsd_taxonomie_auswahl.exe
TimeStamp: 20141005 17:35
Das hier stammt aus der XPPFATAL.LOG, dbmanage ist eben diese Funktion, die ich aufrufe und die Zeile 511 ist die von mir oben benannte Zeile, die nicht mehr ausgeführt wird.

"Stack overflow" heißt doch, dass nicht genügend Arbeitsspeicher für die Aktion zur Verfügung sthet oder?
DelUser01

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von DelUser01 »

Du scheinst das Problem ja recht gut reproduzieren zu können.
Hast Du dabei schon die Prozesswerte im Task Manager (oder noch genauer) beobachtet?
Hast Du das Problem bei allen Dateien welche Du auswertest oder nur bei einer bestimmten?
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von AUGE_OHR »

Benz hat geschrieben:Module: EH
Error Codes: EH: 12 Sub: 0(0) OS: 0 XPP: 16
EH : 12 -> Variable too short
XPP : 16 -> Remarks: Only seen in Fatal Error Logs: "EH: 12"/"OS: 0"/"XPP: 16",
"Stack Overflow", "Module: EH"
Benz hat geschrieben:"Stack overflow" heißt doch, dass nicht genügend Arbeitsspeicher für die Aktion zur Verfügung sthet oder?
du kannst beim linken den STACK vergrösseren (Standardwert ist 1 MB)

p.s. schon mal mit einen anderen XML Datei versucht ...
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von brandelh »

Nur zur Sicherheit, es bedeutet nicht, dass der installierte Arbeitsspeicher zu wenig ist,
sondern dass die Anwendung zu wenig STACK Speicher hat, wie schon angemerkt, wird
dem Programm von Linker STACK Speicher zugewiesen und bei Anwendungen mit z.B. Rekursion
oder sehr vielen Zeigern / Funktionsaufrufen etc. kann es zu der besagten Fehlermeldung kommen.

Dann einfach den Wert erhöhen. Ich meine 1000000 wäre Standard, aber besser in der Hilfe nachlesen.
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von Benz »

Das hört sich doch schonmal nach einer Lösung an ! :blob8:
Könnt ihr mir noch einen kleinen Tipp geben, wo ich das in der Hilfe finde, oder wie ich das im Linker schreiben muss?
Mit so etwas habe ich mich leider noch kaum beschäftigt :oops:
Vielen Dank schonmal!

P.S.: Leider gibt es nur die eine XML-Datei, mit einer anderen kann ich es nicht versuchen.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von brandelh »

Suche nach STACK oder ALINK (Programmierwerkzeuge oder so ) ...
Es müsste ein Parameter für ALINK sein, ST oder so ...
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: INDEXKEY() / OrdKey() verursachen Absturz

Beitrag von Benz »

Vielen Dank!! Funktioniert wunderbar:

Code: Alles auswählen

xpp xxx.prg
alink xxx.prg /ST:3000000 /PM:PM
Antworten