[Allegro] Verhaspelungen in Schleife eines find-Befehls wegen

Heinrich Allers allers at t-online.de
Sa Feb 11 17:01:59 CET 2012


Hallo allerseits!

Ich habe es endlich geschafft, ein in sinnvollem Kontext auftretendes Phänomen so zu reduzieren, daß 
der FLEX-Ablauf zwar unsinnig erscheint, aber dafür auf der Demo-Datenbank reproduzierbar ist:

Folgende FLEX-Datei

expo f xyz.txt\var "0"\=
:anfang
+1\var Z\if >1000 jump ende
var #dts " " Z\sho IV
wri #dts " " Z n
find |1 hei?\if g0 close res
     sleep 100   // 1/10 Sekunde ausruhen!
jump anfang
:ende\close x
mes Fertig

führt stets bei mir zu einem a99-Zusammenbruch, und zwar nach soundsoviel Schleifendurchläufen; dabei 
war "soundsoviel" keine Konstante, lag aber immer in diesem Bereich:
50 < "soundsoviel" <100
(was sowohl im Anzeigefenster als auch in der im Arbeitsverzeichnis mitgeschriebenen Datei x-aus.txt zu 
sehen ist).

Der Abbruch war stets mit folgender Windows-System-Fehlermeldung verbunden:

Dateifehler
Datei C:\DOKUME~\...\LOKALE~\Temp\cat._3 nicht zugänglich

Schließlich noch diese Beobachtungen: Wenn man den find-Befehl desaktiviert, erfolgt der 1000-fache 
Schleifendurchlauf blitzschnell und fehlerfrei. Das tut er auch dann, wenn man mit dem find-Befehl auf 
einen Indexeintrag zielen läßt, der nicht existiert, etwa mit 'find |1 fffff?'.

###

Ausgehend von der Vermutung, daß mein Rechner vielleicht zu schnell prozessiert, habe ich jedem 
Schleifendurchlauf eine zehntel Sekunde Zeit gegeben (also die Zeile 'sleep 100 ...' aktiviert): dann laufen 
die 1000 Schleifenabläufe tatsächlich reibungslos durch.

Beim Versuch, einem Schleifendurchlauf statt 100 nur 30 Millisekunden zuzubilligen ('sleep 30 ...'), gab's 
noch eine Variante des Problems: die Sache lief zwar auch fein bis zum Ende durch, aber irgendwann, 
nach mehr als 100 Durchläufen, versagte schicht der Befehl 'var #dts " " Z\sho IV' seine Dienste, man 
konnte das Geschehen also nicht mehr visuell verfolgen.

###

Irgendetwas stimmt da also nicht! Zu flinker Prozessor? Überlauf eines Speicherbereiches? Oder - so 
etwas soll ja auch vorkommen - Fehler in meiner FLEX-Programmierung?

Hilfreich wäre natürlich auch, wenn vielleicht eine(r) der Kolleg(inn)en das von mir erlebte Fehlverhalten 
reproduzieren könnte - oder umgekehrt: wenn der Reproduktionsversuch scheitert und dort alles fehlerfrei 
nach Plan läuft.


Mit besten Grüßen von

Heinrich Allers

allers at t-online.de * http://www.h-allers.de
Netztagebuch: http://heinrich-erlo-ger.blogspot.com/
Bitácora: http://heinrich-erlo-spa.blogspot.com/



Mehr Informationen über die Mailingliste Allegro