AGB  ·  Datenschutz  ·  Impressum  







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

Schutzverletzung bei Programmende

Ein Thema von freimatz · begonnen am 19. Dez 2017 · letzter Beitrag vom 20. Dez 2017
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#1

Schutzverletzung bei Programmende

  Alt 19. Dez 2017, 08:09
Hallo,
ich bekommen manchmal Schutzverletzung beim Programmende. Programmausführung aus Delphi XE2. Der Debugger hängt in unit FastMM4, Methode "RemoveMediumFreeBlock" bei Zeile "mov TMediumFreeBlock[edx].NextFreeBlock, ecx". CallStack:
Code:
FastMM4.RemoveMediumFreeBlock(???)
FastMM4.FastFreeMem(???)
:00414f89 RemoveMediumFreeBlock + $9
System.FinalizeUnits
:004d4bc2 InterceptFinalizeUnits + $5A
:766e8654 KERNEL32.BaseThreadInitThunk + 0x24
:77394a47 ;
:77394a17 ;
Danach kann ich in der Methode procedure FinalizeUnits auf die Zeile nach except einen breakpoint setzen.
Wenn ich weiterlaufen lasse, dann steht der Debugger dort. Dort gibt es ein "InitContext". Die Daten darin sagen mir nicht saußer InitContext.Module.TypeInfo.Unitnames welches ein unitname enthält. An der unit habe ich auch gearbeitet. Die unit enthält kein finalization Abschnitt.

Ein finalization habe ich nun hinzugefügt und ein Aufruf einer leeren Methode. Nun tritt der Fehler nicht mehr auf.
Trotzdem würde ich gerne wissen was da schief lief.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Schutzverletzung bei Programmende

  Alt 19. Dez 2017, 11:03
Die unit enthält kein finalization Abschnitt.
Und globale Variablen oder Klassenvariablen (class var)?
Die werden ebenfall in der Unit-Finalization freigegeben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Schutzverletzung bei Programmende

  Alt 19. Dez 2017, 11:34
Hallo,

Benutzt du Generics?

Diese leere Methode verschiebt Dein Problem jetzt nur ein bisschen.
Es kann auch wieder auftauschen, wenn z.B. die Unit-Reihenfolge geändert wird.
Heiko
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Schutzverletzung bei Programmende

  Alt 20. Dez 2017, 07:28
Hallo,
Danke für die Antworten. Ja ich fürchte auch, dass das Problem nur verschoben ist.
Globale Variablen oder Klassenvariablen verwende ich nicht. Derzeit sind nur drei Methoden drin.
Generics dagegen verwende ich und zwar ein Typ der abstammt von IList<> aus Spring.Collections.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Schutzverletzung bei Programmende

  Alt 20. Dez 2017, 08:14
Hallo,


1. nimm mal FastMM4, vielleicht wird irgendwo Speicher überschrieben
2. klammer den ganzen Code aus und nimm ihn dann schrittweise wieder rein, bis der Fehler auftritt.


Der 2. Punkt heißt, dass du die leere Methode wieder deaktivierst, um den Fehler wieder zu bekommen.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Schutzverletzung bei Programmende

  Alt 20. Dez 2017, 08:24
Ich hatte ähnliche Fehlermeldungen immer mal wieder in meiner Anfangszeit mit TVirtualTreeView. Damals hatte ich das Konzept der Speicherverwaltung noch nicht ganz verstanden. Es kam immer wieder vor, dass ich dynamisch mit New(PRecord) erzeugte Records doppelt freigeben wollte (einmal mit FreeNode, einmal mit Dispose), was dann zu den eingangs beschriebenen Fehlern führte.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:50 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