Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fremden Prozess wegen Speicherleck debuggen (https://www.delphipraxis.net/168548-fremden-prozess-wegen-speicherleck-debuggen.html)

Dalai 28. Mai 2012 14:47

Fremden Prozess wegen Speicherleck debuggen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Leute,

ich habe seit geraumer Zeit (seit mehr als einem Jahr) das Problem, dass explorer.exe auf meinem Server mit der Zeit immer größer wird :cry:. In welcher Dimension das passiert, kann man im angehängten Bild ablesen (stammt von einem mit Excel erstellten Diagramm); das Bild ist etwas zurechtgestutzt und auf das vergangene halbe Jahr beschränkt. Man sieht außerdem, dass das Problem nicht immer auftritt, denn zwischen Dezember und Februar hielt sich die Speicherfresserei in engen Grenzen.

Bislang habe ich fast alle Shell Extensions, die nicht von MS stammen, deregistriert und Programme abgeschaltet, die sich an den Explorer hängen (TClockEx). Aber auch dadurch habe ich noch keine richtige Idee, wer dafür verantwortlich sein könnte.

Lange Rede, kurzer Sinn: ich möchte der Problemursache (oder mindestens dem Auslöser) näherkommen und daher dachte ich daran, den Explorer zu debuggen. Nun habe ich aber keinerlei Ahnung, wie man das bei fremden Prozessen angeht. Wie und womit würdet ihr vorgehen?

MfG Dalai

Zacherl 28. Mai 2012 14:50

AW: Fremden Prozess wegen Speicherleck debuggen
 
Kommt ganz drauf an. Wenn es sich um die 32 bit Version handelt, könntest du OllyDbg benutzen, an den Explorer attachen und dann z.b. mal Breakpoints auf VirtualAlloc() und Konsorten setzen. Dies dürfte allerdings enorm oft aufgerufen werden und wird wohl sehr schwierig zu debuggen sein.

Dalai 28. Mai 2012 15:36

AW: Fremden Prozess wegen Speicherleck debuggen
 
Zitat:

Zitat von Zacherl (Beitrag 1168387)
Wenn es sich um die 32 bit Version handelt

Jep, ist ein normales XP 32 Bit mit SP3.

Zitat:

könntest du OllyDbg benutzen, an den Explorer attachen
Hab mir mal die Version 2.00 geladen, gestartet und attached, aber wie mache ich dies:
Zitat:

und dann z.b. mal Breakpoints auf VirtualAlloc() und Konsorten setzen.
? Ich hab leider nicht wirklich Plan von dieser Materie, deshalb wäre ich dankbar, wenn man mir ein paar Eckpfeiler gibt, an denen ich mich orientieren kann.

MfG Dalai

Furtbichler 28. Mai 2012 15:50

AW: Fremden Prozess wegen Speicherleck debuggen
 
Wenn du nicht gerade Zeit damit verbringen willst, etwas neues zu lernen, würde ich den PC einfach neu aufsetzen.

Dalai 28. Mai 2012 16:08

AW: Fremden Prozess wegen Speicherleck debuggen
 
Das Problem besteht seit Anfang an, also seit das XP im November 2010 installiert wurde, nur fiel das nicht sofort auf, weil das vorher benutzte System mit Win2k das Verhalten nicht zeigte. Übrigens hat mein Bruder auf seinem ebenfalls neu (im Februar 2011) aufgesetzten System (mit nochmals anderer Hardware) dasselbe Problem. Dazu kommt noch, dass das System ein Server ist, der muss also laufen und verfügbar sein; insofern kann ich den nicht "mal eben" neu aufsetzen.

MfG Dalai

Zacherl 28. Mai 2012 16:46

AW: Fremden Prozess wegen Speicherleck debuggen
 
Debugging mit Olly ist sone Sache für sich. Wenn du noch nie sowas in der Art gemacht hast, würde ich Furtbichler hier zustimmen, dass es sich für dich wohl nicht lohnt sich da einzuarbeiten.

Neben dem Umgang mit Olly musst du dich für so eine umfangreiche Analyse noch extrem gut mit Assembler und den Betriebssystemfunktionen auskennen.

Als Workaround würde ich mir eventuell ein kleines Tool schreiben, was den Explorer beispielsweise jeden Monat oder besser noch jeden Tag mal restartet. Gegebenenfalls könntest du den Explorer Prozess auch dauerhaft terminieren. Der sollte auf einem Server System ja nicht wirklich benötigt werden.

Dalai 28. Mai 2012 18:10

AW: Fremden Prozess wegen Speicherleck debuggen
 
Mir ist egal, ob mich Debugging weiterbringt oder irgendetwas anderes. Ich bin nur eben interessiert daran, mindestens den Auslöser - wenn nicht gar die Ursache - zu finden. Wie das passiert, ist mir egal - nur überfordern sollte es mich nicht.

Ich hab auch schon mit Process Explorer rumgespielt und auch mit Process Monitor und in ersterem z.B. festgestellt, dass das Page Fault Delta relativ hoch ist und außerdem die CPU-Last durch den Explorer ebenfalls deutlich höher ist, wenn er auch Speicher frisst. "Deutlich" heißt in dem Fall ~5 Prozent mehr, was sich im - ebenfalls auf diesem Server laufenden - Munin relativ gut ablesen lässt.

Zitat:

Zitat von Zacherl (Beitrag 1168403)
Gegebenenfalls könntest du den Explorer Prozess auch dauerhaft terminieren. Der sollte auf einem Server System ja nicht wirklich benötigt werden.

Doch, wird er. Der Server bietet nicht nur die üblichen Headless-Funktionen (Fileserver, Jabber-Server, Patch-Server, FTP-Server) sondern wird auch zum Download z.B. von TV-Sendungen via FlashGet oder Torrent benutzt, braucht also in jedem Fall eine Oberfläche mit Taskleiste, Startmenü usw.

MfG Dalai

jaenicke 28. Mai 2012 23:08

AW: Fremden Prozess wegen Speicherleck debuggen
 
Probleme dieser Art hat bei XP zum Beispiel der Vorschaugenerator bei unvollständigen oder beschädigten Videodateien gemacht. Diesen kannst du entweder in den Shell Extensions herausnehmen oder die shmedia.dll ganz mit
Code:
regsvr32 /u shmedia.dll
deinstallieren.

Windows XP ist aber auch nicht als Serverbetriebssystem für den 24h Betrieb gedacht...

Dalai 29. Mai 2012 00:59

AW: Fremden Prozess wegen Speicherleck debuggen
 
Zitat:

Zitat von jaenicke (Beitrag 1168447)
Probleme dieser Art hat bei XP zum Beispiel der Vorschaugenerator bei unvollständigen oder beschädigten Videodateien gemacht.

Das mag auf den Explorer, also den Teil, der als Dateibrowser (ich sage absichtlich nicht Dateimanager) dient, zutreffen. Aber so etwas wie dieses Spielzeug nutze ich nicht, ich arbeite mit Total Commander.

Insofern glaube ich nicht, dass dies etwas bringt
Zitat:

Diesen kannst du entweder in den Shell Extensions herausnehmen oder die shmedia.dll ganz mit
Code:
regsvr32 /u shmedia.dll
deinstallieren.
aber ich werde es dennoch mal ausprobieren, denn vielleicht nutzt irgendein Total Commander-Plugin (oder der TC selbst) Funktionen, die sich in shmedia.dll befinden.

Zitat:

Windows XP ist aber auch nicht als Serverbetriebssystem für den 24h Betrieb gedacht...
Das mag sein, spielt aber für den Umfang des offensichtlichen Speicherlecks keine Rolle. Davon abgesehen habe ich nie angenommen, der Fehler läge in einem Teil des OS sondern natürlich in der sonst installierten Software. Nur ist eben die Frage, wo genau. Außerdem wüsste ich nicht, für welche Funktionalität ich Hunderte Euro ausgeben sollte, nur um ein echtes Server OS zu haben, das durch Installation der problematischen Software dieselben Probleme zeigt. Insofern ist dieses Argument keines, was eine Rolle spielt. Ein Speicherleck dieses Ausmaßes darf nicht da sein, Punkt.

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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