Speicherzugriffsfehler (Speicherabzug geschrieben)

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Re: Speicherzugriffsfehler (Speicherabzug geschrieben)

Beitragvon MacWomble » 21. Sep 2018, 19:50 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.
MacWomble
 
Beiträge: 591
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 22. Sep 2018, 08:39 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 :cry:

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

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.
MacWomble
 
Beiträge: 591
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 22. Sep 2018, 15:57 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
Code: Alles auswählen
 {$ifdef debug_log}Debugln({$I %FILE%} + '->' +{$I %CURRENTROUTINE%} + ' ' +{$I %LINE%});{$endif}

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)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3479
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •
Vorherige

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

porpoises-institution
accuracy-worried