Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ungültige Zeigeroperation/AV obwohl nichts geändert wurde (https://www.delphipraxis.net/190794-ungueltige-zeigeroperation-av-obwohl-nichts-geaendert-wurde.html)

Luckie 8. Nov 2016 17:17

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Vermutlich machst du irgendwo Murks mit Zeigern. Dass es funktioniert hat und jetzt wieder funktioniert, ist wahrscheinlich reine Glücksahe.

Jim Carrey 8. Nov 2016 17:17

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Luckie (Beitrag 1353025)
Vermutlich machst du irgendwo Murks mit Zeigern. Dass es funktioniert hat und jetzt wieder funktioniert, ist wahrscheinlich reine Glücksahe.

Nur wie passt das mit einem Neustart des Systems zusammen?

Zacherl 8. Nov 2016 18:05

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Luckie (Beitrag 1353025)
Vermutlich machst du irgendwo Murks mit Zeigern. Dass es funktioniert hat und jetzt wieder funktioniert, ist wahrscheinlich reine Glücksahe.

Definitiv auch meine Vermutung :thumb:

Zitat:

Zitat von Jim Carrey (Beitrag 1353026)
Nur wie passt das mit einem Neustart des Systems zusammen?

Gibt diverse Sachen, die sich nach einem Neustart ändern können. Z.B. werden alle DLLs dank ASLR an eine neue zufällige ImageBase gemappt.

Jim Carrey 8. Nov 2016 18:30

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zu den Pointern kann ich nur sagen... ich verwende nur da Pointer wo das Programm schon lange komplett geladen wurde.
Vorher absolut nicht.

nahpets 8. Nov 2016 19:32

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Das mag ja sein, aber offensichtlich blieb das Problem ja bis zum Systemneustart bestehen.

D. h.: Es besteht die Möglichkeit, dass Du versehentlich irgendwo im Arbeitsspeicher was überschrieben hast, an einer Stellen, an der Du es niemals vermuten würdest.

Zufällig wird aber zu dem Zeitpunkt, an dem die Zugriffsverletzung auftrat, versucht, dort auf den Speicher zuzugreifen, aber leider wurde da was zerstört.

Irgendeine DLL oder das Betriebssystem selbst, hat da wohl irgendwas vermutet, um es auszuführen, aber leider hat das nicht (mehr) geklappt.

Erst durch einen Neustart des Betriebssystem wurde das Problem behoben, da dabei letztlich alles "neu gemacht wird".

Wenn man bei der Arbeit mit Pointern was falsch macht, muss das nicht zwingend das eigenen Programm betreffen, sondern es kann eine Auswirkung "irgendwo" im System oder in anderer Software haben. So ein Fehler muss nichtmal zwingend auffallen, es kommt halt drauf an, wie kritisch die "zerbeulte" Stelle im Arbeitsspeicher ist.

Die Ursache solcher Probleme zu finden ist nicht zwingend trivial, zumal so ein "Seiteneffekt" nicht unbedingt sofort auffallen muss.

Zacherl 8. Nov 2016 19:45

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von nahpets (Beitrag 1353049)
Wenn man bei der Arbeit mit Pointern was falsch macht, muss das nicht zwingend das eigenen Programm betreffen, sondern es kann eine Auswirkung "irgendwo" im System oder in anderer Software haben. So ein Fehler muss nichtmal zwingend auffallen, es kommt halt drauf an, wie kritisch die "zerbeulte" Stelle im Arbeitsspeicher ist.

Das ist zum Glück unter Windows nicht (mehr) der Fall, sofern man nicht mit MSDN-Library durchsuchenWriteProcessMemory im virtuellen Adressraum eines anderen Prozesses rumspielt. Pages von DLLs haben das COPY_ON_WRITE Flag, wodurch Änderungen an dieser Stelle nur für deinen eigenen Prozess übernommen werden. Höchstens MemoryMappedFiles (MapViewOfFile, NtMapViewOfSection) könnten durch Schreiben an eine falsche Adresse global und permanent bis zum Neustart des Systems beschädigt werden.

Im Grunde hast du aber Recht. Besonders mit deiner letzten Aussage, weshalb ich meistens sogar froh darüber bin, einen Seiteneffekt zu bekommen. Dann weiß ich nämlich, dass irgendwas schief läuft und kann mich auf Fehlersuche begeben.

p80286 8. Nov 2016 20:20

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353021)
Naja, für mich trotzdem kein Grund mein geliebtes Windows 7 zu verlassen :lol:

Zitat:

Zitat von Jim Carrey (Beitrag 1353035)
Zu den Pointern kann ich nur sagen... ich verwende nur da Pointer wo das Programm schon lange komplett geladen wurde.
Vorher absolut nicht.

Es ist äußerst unwahrscheinlich, das Windows "schuld" ist. In 99,9% dieser Fälle ist der Programmierer der Fehlerverursacher. Wie in #4 angemerkt ist der
Delphi-Quellcode:
initialization
Abschnitt einer Unit der erste Ort wo man suchen muß.

Gruß
K-H

Jim Carrey 8. Nov 2016 20:23

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
mhhhh... also die einzige Angelegenheit mit Pointer die ich vor dem problem hatte war... ich habe auf eine Adresse zugegriffen, die noch nicht belegt war mit meinem vorgesehenem Inhalt. Sonst hab ich nix gemacht und das Problem trat auch erst ~1 Stunde später auf.

p80286 8. Nov 2016 20:35

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353054)
ich habe auf eine Adresse zugegriffen, die noch nicht belegt war mit meinem vorgesehenem Inhalt.

Der übliche Weg ist eigentlich, einen Wert "irgendwo" abzulegen, und dann die Adresse dieses "irgendwo" zu übergeben :gruebel:

Gruß
K-H

Jim Carrey 8. Nov 2016 20:39

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Ich hab mich mit meiner showmessage in der Zeile vertan, das ist alles :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz