AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Thema durchsuchen
Ansicht
Themen-Optionen

XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

Ein Thema von Alex_ITA01 · begonnen am 25. Jun 2013 · letzter Beitrag vom 17. Sep 2013
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.688 Beiträge
 
Delphi 12 Athens
 
#1

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 08:12
Das hört sich doch für mich nach irgendeinen Compilerfehler an, der in die Exe rein compiliert wird oder nicht?
Hört sich eher nach ungültigen dcu-Dateien an. Machst du immer ein Build oder nur ein Compile? Es kann manchmal vorkommen, daß solche dcus entstehen, wenn man z.B. eine pas-Datei aus der Versionskontrolle zurücksetzt. Die vorher erstellte dcu ist dann neuer als die pas und schon passt was nicht zusammen. Es gibt aber noch dutzende andere mögliche Gründe für solche Effekte. Eine beliebte Quelle sind auch unterschiedliche Compiler-Einstellungen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#2

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 08:24
Hallo Uwe,
was ich auch nicht verstehe ist, dass es bei einem 64 Build nie schief geht bei mir.
Wir machen eigentlich immer Umsch+F9 zum Projekt erzeugen und löschen per Batch Datei vorher alle alten DCUs.

Komisch ist irgendwie auch, dass immer in dem Haltepunkt "CleanEventList(SyncEventCache);" das SynchEventCache immer genau 3 Einträge drinne hat (nie mehr oder weniger) und manchmal ist das "Lock" von einem dieser Einträge auf 1 und damit hängt das ganze...

Irgendwie komisch. Aber ich bin ja nicht der einzige mit dem Problem so wie ich im Netz gelesen habe.
Kann man hier nicht irgendwie direkt an Embacadero ran treten und ein HotFix/Patch erfragen, damit es nicht hängen bleibt sondern einfach nur die Lock Eigenschaft abfragt auf 0 und nur dann freigibt...

Gruß
Alex

Edit:
Was mir jetzt noch grad dazu einfällt:
Ich ändere nichts am Quelltext und lösche per BatchDatei immer alle DCUs. Dann mache ich immer ein Rebuild mit Umschalt+F9 und die anschließend erzeugte Exe (32bit) funktioniert mal und mal nicht. Das kann doch gar nicht sein oder? Wenn die Exe dann mal funktioniert, dann funktioniert sie auch auf dem PC von meinem Kollegen. Das kann doch dann auch keine Einstellung am Compiler sein, diese ändere ich ja schließlich nicht
Let's fetz sprach der Frosch und sprang in den Mixer

Geändert von Alex_ITA01 (10. Sep 2013 um 10:46 Uhr)
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#3

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 12:13
Ich habe jetzt mal D2009 mit XE4 verglichen.
Das DoneMonitorSupport gibt es nämlich unter D2009 auch schon nur werden standardmäßig keine Events eingetragen (TMonitor.Enter -> TMonitor.GetEvent -> MonitorSupport.NewSyncObject).

Anbei mal ein Screenshot wo man den Unterschied im TThread deutlich sieht.
Das hat sich nämlich geändert zwischen den beiden Delphi Versionen.

(System.)Classes.pas

XE4: class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False);

Dort wird mit TMonitor.Enter/Exit gearbeitet

D2009: class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False);

Hier wird mit EnterCriticalSection(ThreadLock) und LeaveCriticalSection(ThreadLock) gearbeitet.

Schön wäre es jetzt natürlich, dass gleiche Verhalten wie unter D2009 wieder zu erzeugen.

Gruß
Alex
Angehängte Grafiken
Dateityp: jpg 2013.09.10-13_08_05-001.jpg (89,5 KB, 12x aufgerufen)
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.688 Beiträge
 
Delphi 12 Athens
 
#4

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 12:30
Schön wäre es jetzt natürlich, dass gleiche Verhalten wie unter D2009 wieder zu erzeugen.
Ich würde eher versuchen, die Instanzen zu finden, die unter bestimmten Bedingungen offenbar nicht freigegeben werden. Dann hast du das Problem beim nächsten Update nämlich auch nicht mehr. Grundsätzlich funktioniert DoneMonitorSupport ja, wenn wirklich alle Objekte, die TMonitor verwenden auch wieder freigegeben werden. Auch wenn du das jetzt irgendwie hin flickst, so daß der Hänger nicht auftritt, bleibt doch ein unangenehmer Beigeschmack - würde es zumindest bei mir.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#5

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 13:24
Klar, ich will es eigentlich auch richtig gelöst haben und nicht irgendwie gefuscht.
Das Problem ist ja, dass ich nicht genau weiß, wer alles TMonitor verwendet (scheinen ja in der neuen Delphi Version jede Menge Controls/Objecte zu sein) und wie ich vielleicht anhand der EventAdresse auf das Object schlussfolgern könnte.

Gruß
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 13:44
Als ich mit Threads angefangen habe, hatte ich die dollsten sporadischen Zugriffsverletzungen und sonstigen Mist. Deswegen tippe ich weiterhin darauf, dass dieses Verhalten von einem Thread ausgelöst wird. Gibt es für dich nicht die Möglichkeit diese Threads mal alle auszukommentieren, um zu schauen ob das Problem bleibt?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.989 Beiträge
 
Delphi 12 Athens
 
#7

AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport

  Alt 10. Sep 2013, 13:59
Ich habe das sehr einfach gelöst...
FastMM4 im FullDebugMode, Haltepunkt auf die genannte Schleife, per Assemblerfenster manuell aus der Schleife in DoneMonitorSupport raus und dann alle Speicherlecks geprüft, die FastMM4 gefunden hat.
Sebastian Jänicke
AppCentral
  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 12:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz