AGB  ·  Datenschutz  ·  Impressum  







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

IDE debuggen und __Recovery?

Ein Thema von himitsu · begonnen am 3. Jul 2024 · letzter Beitrag vom 3. Jul 2024
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 11:42
Sacht mal, kann es sein, dass man keine Prozesse debuggen kann, die zu viel RAM belegen?

Grade eben hing D11 beim Schließen ... auf X geklickt, wollte auf den "willst'e speichern?"-Dialog klicken, aber der kam nie.

1,5 2,5 GB RAM und immernoch steigend,
alle 4 Kerne gleichmäßig zu 40-50% ausgelastet
und laut Ressourcenmonitor keine Dateizugriffe

IDE nochmal gestartet und wollte schauen, was Delphi macht, also Start > Verbinden > BDS.exe
Weil es nicht ging, nochmal XE gestartet und dort das Selbe
Zitat:
Prozess kann nicht gestartet werden: Zur Verarbeitung dieses Befehls sind nicht genügend Speicherressourcen verfügbar.
20 GB RAM im System aber noch frei

Laut ProcessExplorer:
* 50% aller Threads hingen in einem Assert (siehe Anhang) ... nur er erste Thread bewegte sich
* und im Haupthtread 6 Mal verschachtelt abwechselnd der Exceptiondialog von Delphi und MadExcept

Ein Speicherabbild hatte ich diesmal auch erstellt ... falls Lust

Nach gefühlt einer 1/4 Stunde im Taskmanager gesehn, dass es inzwischen einen Fehlerdialog gibt,
der war sichtbar und meinte nicht genug Speicher, aber war nicht bedienbar/wegklickbar und Delphi hing weiterhin mit guter CPU-Last.

> Lösung Taskmanager > Kill

Ach ja, und vom Taskmanager heute auch mal was Neues gesehn, nach längerer Zeit -> Effizienzmodus (siehe Anhang)



So, dann geschaut, was das Minütliche __Recovery sagt
* diesmal war wirklich eine Datei gespeichert und eine INI

* Delphi gestartet
* Projektgruppe wieder geladen
* die Unit wurde auch geladen

und jetzt SOLLTE doch eine Meldung ala "hab Änderungen gefunden, soll ich sie laden?",
ABER NEIN, kam nicht und die Änderungen waren auch nicht geladen

* Unit geschlossen
* wieder geöffnet
* und jetzt wurde das __Recovery bösartig gelöscht (zum Glück hab ich mir vorher eine Kopie gemacht)

Funktioniert der DRECK eigentlich bei irgendwem zuverlässig?
Miniaturansicht angehängter Grafiken
screenshot-2024-07-03-110211.png   screenshot-2024-07-03-110844.png   screenshot-2024-07-03-110345.png  
$2B or not $2B

Geändert von himitsu ( 3. Jul 2024 um 14:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 13:56
Das ist weniger das Problem. Das Problem ist, dass das zu debuggende Problem bereits an die Grenzen des Speichers gestoßen ist. Durch die Fragmentierung ist ja schon vor den 3 GB Schluss. Deshalb kommt man NACH einem solchen Problem kaum noch in einen solchen Prozess hinein. So etwas kann man nur sinnvoll debuggen, wenn man sich vorher einklinkt.

Das passiert übrigens auch mit anderen Debuggern wie WinDbg. Da geht es in solchen Fällen auch kaum weiter. Den wollte ich nämlich bei einem ähnlichen Problem als Alternative verwenden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 14:15
Meistens hoffe ich, dass es gut geht ... will ja dann erst nachsehn, nachdem es geknallt hat.

Jetzt wo du's sagst ... an meinen Eigenen hatte ich jetzt nicht gedacht.
https://www.delphipraxis.net/215343-...ltepunkte.html
(aber Stacktrace wäre da eh noch nicht vorhanden)
$2B or not $2B
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
353 Beiträge
 
#4

AW: IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 14:37
@himitsu , in your second screenshot your focused thread is not the main one, yet it does show what may be the culprit,

LdrInitializeThunk is the kernel function responsible for loading dynamic libraries, most likely and like when the an exe is loading and the OS is preparing and loading its dependencies from its import table, some DLL loaded by LoadLibrary might pass without this, yet this one might be called for the import for that DLL, aka not directly.

On side note : i hate delayed loading import, it can lead to unpredictable cases.

Is there any thing useful with the main thread ? , as it is visible in the screen shot, which in a loop too, but with less intensive CPU usage at ~500 million cycle per second.
So your main thread might show the dead loop or at least more information.


extra resource:
https://stackoverflow.com/questions/...45012_43851743
, yet your case might be in loading and failed memory allocation, yet the main thread request loading again...
Kas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 14:49
OK, welcher Thread es war, war prinzipiell erstmal egal ... wollte nur wissen was da so viel CPU verbraucht
und ob ich da irgendeinen Anhaltspunkt finde, das Problem zukünftig zu beseitigen. (z.B. wenn es etwas von unserem eigenem DesignTimeCode gewesen wäre)
Ab und an sah dieser Thread z.B. so aus
Zitat:
0x0000000000000000
KERNELBASE.dll!VirtualQuery+0x23
0x0000000000000000
KERNELBASE.dll!VirtualQuery+0x23
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x6a2
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0xefa
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
ntdll.dll!KiUserExceptionDispatcher+0x26
madDisAsm_.bpl!@$xp$24Maddisasm@TPFunctionInfo+0x4 1ae
madDisAsm_.bpl!@Maddisasm@ParseCode$qqrpvr27System @%AnsiStringT$us$i0$%+0x8d1
madDisAsm_.bpl!@Maddisasm@ParseFunction_$qqrpvuit1 t1t1t1t1+0x3bf
madExcept_.bpl!@Madstacktrace@BcbTermination@$bctr $qqrx20System@UnicodeString+0x797
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x1390
madExcept_.bpl!@Madstacktrace@InternalError$qqrx20 System@UnicodeStringoo+0x175d
madExcept_.bpl!@Madstacktrace@StackTrace$qqrooop48 System@%DynamicArray$24Madstacktrace@TStackItem%p8 _CONTEXTpvoouiuit6ppvtctc56System@%DelphiInterface $29Madnvprgralert@IProgressAlert%uioo27System@%Ans iStringT$us$i0$%popuitltkp44System@%DynamicArrawqf FnTYk
SysDB280.bpl!@Ucimrtl@Exception@TCimExceptionHelpe r@GetExceptionMessageComplete$qqrv+0x102
rtl280.bpl!@System@Sysutils@Exception@RaisingExcep tion$qqrp23System@TExceptionRecord+0x1e
exceptiondiag280.bpl!@$xp$29Jclhookexcept@TJclModu leArray+0x683
rtl280.bpl!@System@@HandleAnyException$qqrv+0x35
ntdll.dll!RtlInterlockedCompareExchange64+0x1c4
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 15:01
thread is not the main one
https://embt.atlassian.net/servicede...tal/1/RSS-1224

But it could be that simple if we could see it directly.
$2B or not $2B
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
353 Beiträge
 
#7

AW: IDE debuggen und __Recovery?

  Alt 3. Jul 2024, 15:25
Well, all what i see from this stack is
1) MadExcept may be unable handle exception (or to be more accurate,) can't stack tracing under low memory, unless it is failing to handle its own exceptions.
2) There is recursive calls and this is more dangerous then (1)
3) The stack is cut short, this is not all !, and you need more powerful tool to capture the stack on such thread, for that use WinDbg.
Kas
  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 01:55 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