Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Access Violation in TObject.InheritsFrom von "is"-Operator

  Alt 5. Jul 2024, 10:20
Während dieses Aufrufs wird der Speicher dort wohl nicht kaputt geh.

Es ist wohl eher so, dass es
* einfach ein ungültiger Zeiger ist -> Variable nicht initialisiert oder Objekt schon freigegeben, auf welches dort gezeigt wird
* oder es gab irgendwo z.B. einen Bufferoverflow und hat dir da was zerschossen.


Zu einem Zeitpunkt, wo es noch geht, müsstest du also anfangen und könntest dir dann die Speicher ansehen,
also die Stelle der Variable, bzw. den Inhalt des Objektes
* ganz am Anfang (Offset 0) steckt der Zeiger zur Klasse
* und dann in den Typinfos selbst, geht es dann weiter (vmtParent), da dort ja auch die Vorfahren geprüft werden

Das dann mit dem Zeitpunkt vergleichen, wenn es knallt,
und jetzt oder schon vorher prophylaktisch via Datenhaltepunkten, Guards oder ab und an manuell nachsehn, wann und durch wen es sich ändert.


Joar, das große FastMM im Debugmodus, Deleaker, Erekalog, madExcept und andere Tools können eventuell helfen.




"Testprojekt" oder selbst testen, also versuchen das im Kleinen nachzustellen,
bzw. das Projekt so lange ausmisten, bis der Fehler weg ist ... das zuletzt entfernte Codestück ist dann schonmal ein Anfang zum Suchen.



PS: Auch wenn es keine "wirkliche" Lösung ist, aber geh mal in Projektoptionen > Erzeugen > Delphi-Compiler > Linken > und schalte die beiden Optionen bezüglich ASLR ab .... ist der Fehler dann weg?
$2B or not $2B

Geändert von himitsu ( 5. Jul 2024 um 10:27 Uhr)
  Mit Zitat antworten Zitat