AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sporadische Zugriffsverletzungen

Ein Thema von Hobbycoder · begonnen am 25. Jun 2018 · letzter Beitrag vom 27. Jun 2018
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Sporadische Zugriffsverletzungen

  Alt 26. Jun 2018, 16:17
Was Allgemeines. So sporadische Zugriffsverletzungen deuten drauf hin, dass was mit dem Speicher nicht stimmt. Beispielsweise wurde ein Objekt freigegeben, auf das dann aber noch zugegriffen wird. Manchmal hat man Glück und die Speicherstelle enthält noch gültige Daten, aber manchmal eben auch nicht und dann kommt es zu einer Zugriffsverletzung. Also untersuche dein Code mal auf solche Situationen hin.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Sporadische Zugriffsverletzungen

  Alt 26. Jun 2018, 21:17
Jetzt fehlt noch der Hinweis auf Bereichsprüfung und Konsorten und die Basis für die Fehlersuche ist gelegt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Sporadische Zugriffsverletzungen

  Alt 27. Jun 2018, 07:04
Beispielsweise wurde ein Objekt freigegeben, auf das dann aber noch zugegriffen wird. Manchmal hat man Glück und die Speicherstelle enthält noch gültige Daten...
Was den Fehler dann um so schwerer lokalisierbar macht. Wenn z.B. durch Zufall auf dem Entwicklungsrechner immer genug Speicher vorhanden ist und darum der Speicher an der Stelle noch nicht überschrieben wurde taucht der Fehler unter Umständen gar nicht auf. Beim Benutzer, wo eine andere Speichersituation vorliegt knallt es dann sofort.

In einer solchen Situation kann man eigentlich nur mit FastMM im "FullDebug"-Modus einem solchen Problem auf die Spur kommen. Da gibt es die Möglichkeit den Speicher freigegebener Objekte mit einem Bit-Muster überschreiben zu lassen, was dann in dieser Situation das Auffinden des Problems enorm erleichtert. Da knallt es nämlich direkt beim nächsten Zugriff und man sieht im Debugger sofort wo der ungültige Zugriff erfolgte.
Ralf Kaiser
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#14

AW: Sporadische Zugriffsverletzungen

  Alt 27. Jun 2018, 10:12
Danke für eure zahlreichen Hinweise und Lösungsvorschläge. Ich werde mal versuchen damit dem Fehler auf die Spur zu kommen.
Bis hier hin erst mal vielen Dank.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Sporadische Zugriffsverletzungen

  Alt 27. Jun 2018, 10:53
In einer solchen Situation kann man eigentlich nur mit FastMM im "FullDebug"-Modus einem solchen Problem auf die Spur kommen.
Da der TE MadExcept erwähnt, die Option "instantly crash on bufffer ..." wäre auch noch eine Möglichkeit. (basic settings)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Sporadische Zugriffsverletzungen

  Alt 27. Jun 2018, 11:27
Mit FastMM bekomme ich direkt beim Editieren Fehler mit Stacktrace vom Erstellen und Freigeben des fehlerhaften Objekt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#17

AW: Sporadische Zugriffsverletzungen

  Alt 27. Jun 2018, 11:34
Im OnClick-Event der Speedbutton wird indirekt SetView aufgerufen.
Darin werden alle Speedbutton freigegeben.
Nachdem dieses OnClick-Event abgearbeitet ist, kehrt das Programm zum nun nicht mehr existierenden Speedbutton zurück.
Die Methode, welche das OnClick-Event aufgerufen hat, wird zuende geführt.
Der Zeiger Self ist ungültig und verweist auf Speicher der vorher mit den Daten des Speedbutton belegt war.
Dort können jetzt ganz andere Daten liegen, die bei Schreibzugriffen beschädigt werden.

Lösung 1:
Man verzichtet auf das Erzeugen und Freigeben der Buttons und macht diese nur sichtbar oder unsichtbar.

Lösung 2:
Im OnClick-Event wird nur eine Nachricht an das Formular gepostet(PostMessage) und die Methode sofort beendet.
Die eigentliche Verarbeitung erfogt dann als Reaktion auf den Empfang der Nachricht.

Geändert von Blup (27. Jun 2018 um 11:44 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.
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