Speicherzugriffsfehler (Speicherabzug geschrieben)
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Speicherzugriffsfehler (Speicherabzug geschrieben)
Danke erst mal. Ich werde das am WE noch genauer prüfen. Aber ich habe bewusst keine lib ausgetauscht.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Speicherzugriffsfehler (Speicherabzug geschrieben)
So, habe jetzt mit verschiedenen DBs (MySQL, MariaDB mit lokalem Server und Netzserver) auf verschiedenen Rechnern getestet - die Datenbank scheint es nicht zu sein.
Es kommt auch bei der Debug-Version hin und wieder zu einer Heaptrace-Meldung, aber bei weitem nicht so oft wie in der Release.
Es ist auch nicht nachvollziehbar, nach welchen Programmaktionen es auftritt. Ich kann ein paar mal die selben Aktionen ausführen und alles ist OK, dann wieder kommt es zu Differenzen in der Heap
Da muss ich wohl weiter graben, bis ich den Übeltäter gefunden habe.
Gibt es noch irgendwelche Tipps, wie man da am besten vorgeht?
Mein Programm besteht aus rund 50 Forms, was es nicht eben einfach macht ...
Es kommt auch bei der Debug-Version hin und wieder zu einer Heaptrace-Meldung, aber bei weitem nicht so oft wie in der Release.
Es ist auch nicht nachvollziehbar, nach welchen Programmaktionen es auftritt. Ich kann ein paar mal die selben Aktionen ausführen und alles ist OK, dann wieder kommt es zu Differenzen in der Heap

Da muss ich wohl weiter graben, bis ich den Übeltäter gefunden habe.

Gibt es noch irgendwelche Tipps, wie man da am besten vorgeht?
Mein Programm besteht aus rund 50 Forms, was es nicht eben einfach macht ...
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Speicherzugriffsfehler (Speicherabzug geschrieben)
Zur Klarstellung suchst du nach Speicherlöchern = Heaptrace oder warum du den Speicherzugriffsfehler (= Speicherzugriffsfehler (Speicherabzug geschrieben) hast.
Das sind für mich 2 verschiedene paar Schuhe.
A) Heaptrace ist/kann eine Folge des Speicherzugriffsfehler sein. Daher würde ich einmal dort auf die Suche gehen warum bzw. wo er kracht.
B) Heaptrace meldet sich nachdem das Programm Ordnunggemäß beendet wurde, dann kann man anhand der Meldungen versuchen das Problem mit dem Speicher einzugrenzen.
Für mich 2 komplett unterschiedliche Herangehensweisen.
Bei A verwende ich meist das Konstrukt
damit ich einmal eingrenzen kann in welcher Routine genau das Programm den Zugriffsfehler macht, wenn ich schon im Release arbeiten muss. Das bedingt natürlich den LazLogger.
Bei B sollten die Probleme unabhängig von Debug oder Release auftreten, dann arbeite ich meist mit Breakpoints beim Erstellen bzw. freigeben der Objekte und mache mit echte Strichliste (am Papier
ganz Klassisch)
Das sind für mich 2 verschiedene paar Schuhe.
A) Heaptrace ist/kann eine Folge des Speicherzugriffsfehler sein. Daher würde ich einmal dort auf die Suche gehen warum bzw. wo er kracht.
B) Heaptrace meldet sich nachdem das Programm Ordnunggemäß beendet wurde, dann kann man anhand der Meldungen versuchen das Problem mit dem Speicher einzugrenzen.
Für mich 2 komplett unterschiedliche Herangehensweisen.
Bei A verwende ich meist das Konstrukt
Code: Alles auswählen
{$ifdef debug_log}Debugln({$I %FILE%} + '->' +{$I %CURRENTROUTINE%} + ' ' +{$I %LINE%});{$endif}
Bei B sollten die Probleme unabhängig von Debug oder Release auftreten, dann arbeite ich meist mit Breakpoints beim Erstellen bzw. freigeben der Objekte und mache mit echte Strichliste (am Papier

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).