AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Zugriffsverletzung nach Application.Run
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung nach Application.Run

Ein Thema von bksoft · begonnen am 19. Nov 2009 · letzter Beitrag vom 20. Nov 2009
Antwort Antwort
bksoft
(Gast)

n/a Beiträge
 
#1

Zugriffsverletzung nach Application.Run

  Alt 19. Nov 2009, 20:01
Hallo,

ich habe manchmal eine Zugriffsverletzung beim Beenden meiner Anwendung.
Der Fehler ist immer der selbe: Modified byte offsets (and lengths): 12(1)

################################################## ######################

FastMM has detected an error during a free block scan operation. FastMM detected that a block has been modified after being freed.

Modified byte offsets (and lengths): 12(1)

The previous block size was: 56

This block was previously allocated by thread 0x860, and the stack trace (return addresses) at the time was:
40334A [system.pas][System][@GetMem][1227]
403BED [system.pas][System][TObject.NewInstance][3482]
403FE6 [system.pas][System][@ClassCreate][4158]
4846FF [LMDTimer][TLMDThreadedTimer.Create]
48484E [LMDTimer][TLMDHiTimer.UpdateTimer]
484745 [LMDTimer][TLMDHiTimer.SetEnabled]
53BBD1 [IO1.PAS][Io1][TForm1.Init_Velleman_K8055USB_1][13851]
53B866 [IO1.PAS][Io1][TForm1.Menu_Velleman_K8055USBClick][13796]
451FFA [Menus.pas][Menus][TMenuItem.Click][1740]
45369C [Menus.pas][Menus][TMenu.DispatchCommand][2446]
45DA86 [Forms.pas][Forms][TCustomForm.WMCommand][4032]

The block was previously used for an object of class: TLMDThreadedTimer

The allocation number was: 78542

The block was previously freed by thread 0x668, and the stack trace (return addresses) at the time was:
403362 [system.pas][System][@FreeMem][1239]
403C1A [system.pas][System][TObject.FreeInstance][3506]
404031 [system.pas][System][@ClassDestroy][4197]
41E5F5 [Classes.pas][Classes][TThread.Destroy][7402]
403C8B [system.pas][System][TObject.Free][3530]
41E4EA [Classes.pas][Classes][ThreadProc][7376]
404A4A [system.pas][System][ThreadWrapper][5606]
77E7B3BC [lstrcmpiW]

The current thread ID is 0x860, and the stack trace (return addresses) leading to this error is:
40C758 [FastMM4.pas][FastMM4][CheckBlocksOnShutdown][7981]
40D49A [FastMM4.pas][FastMM4][FinalizeMemoryManager][9045]
40D4E2 [FastMM4.pas][FastMM4][Finalization][9126]
4046F6 [system.pas][System][FInitUnits][5122]
404945 [system.pas][System][@Halt0][5516]
552C02 [progname][initialization]
77E989D5 [ProcessIdToSessionId]

################################################## ######################

sieht so aus als kommt das vom LMD Timer.
Use Thread vom Timer ist auf true, dann erhalte ich "manchmal" den Fehler beim beenden.
Ist Use Thread auf false gibt es kein Fehler, ich brauche aber einen threaded hitimer

Hat jemand ne Idee was man da machen kann?

Grüsse,
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Zugriffsverletzung nach Application.Run

  Alt 19. Nov 2009, 20:55
Werden die Threads auch vor dem normalen Beendungsprozess der Anwendung explizit geschlossen. Falls man den "normalen" Aufräumprozess der VCL verwendet gibt es ab und zu Probleme (unabhängig jezt von den LMD Kompos).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bksoft
(Gast)

n/a Beiträge
 
#3

Re: Zugriffsverletzung nach Application.Run

  Alt 20. Nov 2009, 21:30
Zitat von Bernhard Geyer:
Werden die Threads auch vor dem normalen Beendungsprozess der Anwendung explizit geschlossen. Falls man den "normalen" Aufräumprozess der VCL verwendet gibt es ab und zu Probleme (unabhängig jezt von den LMD Kompos).
Ich selbst benutze keine Threads! Nur evtl. verwendete externe Komponenten wie hier der HiTimer.

Übrigens werden alle Timer bei OnClose disabled und nach einem kleinen
"MyDelay mit processmessages" die OnTimer Procedure(n) auf nil gesetzt.

Im Moment überlege ich das Close Problem mit einem dirty Trick zu lösen:
Merker setzen wenn ein treaded timer enabled wird
(das Problem taucht hier nur auf wenn ein threaded Timer im Einsatz war),
dann bei close als letzte Zeile:
if bHiTimer then ExitProcess(0);

Ich weiss das ist nicht schick, aber was tun sprach Zeus!
  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 06:11 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