![]() |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Antworten
1. diese beiden Schleifen stecken mitten im Execute-Block eines Threads 2. i ist lokal im Execute-Block deklariert, ein globales i gibt es nicht 3. Tokyo noch ohne Hotfix da mir die Zeit fehlt eine etwaige Fehlinstallation zu reparieren Ohne TFile ist der Fehler weg. XE8 hat mit den 3 TFile's keine Probleme. Das 32 Bit-Kompilat auch nicht. Nur Tokyo mit 64 Bit meckert. Zitat:
Mit Speicherproblem meinst du aber keine defekte Hardware? |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Nein, ich meine überschriebenen Speicher z.B., aber das heißt nicht, dass das an deinem eigenen Quelltext liegen muss. Es kann natürlich auch ein Fehler in der neuen Delphiversion sein. Die Wahrscheinlichkeit ist zwar nicht besonders hoch, aber möglich ist alles.
Ich schaue mir die Implementierungen einmal an. |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Ich habe gerade auch flott mal drüber geguckt. Es gibt zwar von XE8 zu Tokyo einige Änderungen (45 laut Anzeige) aber das meiste betrifft nur Linux.
|
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Definitiv ein Buffer-Overflow an irgendeiner anderen Stelle, der das Problem letztendlich verursacht. Viel Spaß beim Suchen :stupid: Deine Operationen mit
Delphi-Quellcode:
sind hier auch nicht umbedingt der Auslöser - können natürlich aber.
TFile
Nur zur Sicherheit: Als was hast du
Delphi-Quellcode:
deklariert, welches du an die
fileDate
![]() |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Zitat:
1: warum ist der Fehler komplett weg sobald ich TFile 2x verwende statt 3x (oder halt gar nicht) 2: warum nur bei 64 Bit 3: und warum nicht bei XE8 fileDate ist als TWin32FileAttributeData deklariert. Woran erkennt man einen BufferOverflow denn? Was muss man da falsch machen um den zu erzeugen. |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Zitat:
1. Dadurch verschieben sich die Variablen auf dem Stack / der Stack wird kleiner / anderer Code wird generiert, wodurch dann letztendlich vielleicht eine andere Variable überschrieben wird und nicht dein Schleifen-Zähler oder
Delphi-Quellcode:
. Kann man nur spekulieren.
List.Count
2. Auch hier wird anderer Code generiert / bestimmte Datentypen (Pointer z.b.) sind auf einmal 8-Byte statt 4-Byte groß, wodurch sich die Position der lokalen Variablen auf dem Stack ebenfalls wieder verändert. 3. Kann man wieder nur spekulieren. Vermutlich wird der Code hier auf andere Weise generiert / optimiert, weshalb sich erneut die Position der Variablen auf dem Stack ändern könnte. Zitat:
Zitat:
![]()
Delphi-Quellcode:
angenommen mal 4-Byte zu klein und auf dem Stack liegt zufälligerweise eine lokale Integer-Variable direkt hinter dem Struct, dann würde die API fehlerhafterweise den Wert der dahinterliegenden Variable mit "Irgendwas" überschreiben.
TWin32FileAttributeData
|
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Zitat:
Nur stellt sich mir noch immer die Frage, warum XE8 das Problem nicht hat Tokyo ohne HF aber schon. Und warum nur 64 Bit. Dann müsste das 32er Kompilat ja auch Probleme haben wenn es ein Codefehler wäre. Wenn es tatsächlich ein BufferOverflow irgendwo wäre (falscher Index Array ...), dann müsste ich doch schon vorher wenigstens Zugriffsverletzungen oder ähnliche Fehler sehen. Wie bereits erwähnt besteht der Fehler erst seit dem Umstieg auf Tokyo. FastMM4 zeigt keinerlei Auffälligkeiten. Memory Leaks gibt es auch keine. |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Zitat:
Ich bin mir aber 100% sicher, dass ich selber keine eingebaut habe. |
AW: Argument außerhalb des gültigen Bereichs (for-Schleife zählt ins Minus)
Also es gibt auch Tools, um BufferOverflows zu erkennen. Leider habe ich damit nur Erfahrung bei Visual Studio und kann dir für Delphi hier nicht großartig weiterhelfen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz