![]() |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Zitat:
|
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
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 |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
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?
|
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
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. ;-) |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Alle Threads ausklammern wäre sicherlich recht aufwendig wenn überhaupt machbar. Muss ich mal im Hinterkopf behalten.
@jaenicke: Ich kann dir nur teilweise folgen. FastMM4 ist klar mit FullDebugMode, dann den Breakpoint auf die repeat until Schleife ist mir auch noch klar aber was meinst du mit "per Assemblerfenster manuell aus der Schleife und dann Speicherlecks prüfen"? Was du mit Assembler Fenster meinst weiß ich auch noch aber wie kommt ich "manuell" aus der Schleife um dann die Speicherlecks zu sehen? Gruß Alex Edit: Könnte dieser Fehler auch von einem nicht freigegebenen Formular entstehen? |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Zitat:
Dazu habe ich gerade nicht genug Zeit, ich schreibe nachher etwas dazu. Grundsätzlich musst du nur nach der Prüfung vor dem Sprungbefehl das Ergebnis manipulieren, damit du aus der Schleife kommst. Zitat:
|
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Hallo zusammen,
Zitat:
@jaenicke: Ich bin mal gespannt auf deine "Anleitung" mit dem Assemblerfenster ;-) Gruß Alex |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Liste der Anhänge anzeigen (Anzahl: 1)
Oh, Entschuldigung, das habe ich vergessen.
Setze in die genannte Zeile (
Delphi-Quellcode:
) einen Haltepunkt. Kommst du da an, öffne das CPU-Fenster (Strg + Alt + C), gehe weiter bis nach der Zeile
repeat until AtomicCmpExchange(EventCache[I].Lock, 1, 0) = 0;
Delphi-Quellcode:
, sprich in den bedingten Sprung jnz. Dann setze das Zero-Flag und du solltest aus der Schleife kommen.
test eax, eax
Anhang 39873 |
AW: XE4 Probleme beim Beenden der Anwendung - DoneMonitorSupport
Danke schön. Werde ich mal testen und dann das Ergebnis hier bekannt geben.
Gruß Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 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