[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