Mittels poolmon habe ich mittlerweile herausgefunden, dass der Verursacher intelpep.sys ist, also das Intel Power Engine Plugin (Tag PEPI). Interessanterweise stellt man mit poolmon auch fest, dass die Größe pro Allozierung unter diesem Tag fast genau 4 KB sind (4-5 Bytes darunter). Darunter schließe ich, dass das Problem bei einer wiederkehrenden fehlerhaften 4-KB-Allozierung entsteht. Dass es insgesamt knapp unter 4 KB pro Allozierung sind, liegt vermutlich daran, dass einige kleinere, nicht fehlerhafte Allozierungen den Schnitt ganz leicht nach unten drücken. Diese 4 KB könnten also vielleicht ein nützlicher Hinweis sein, auch wenn ich noch keine Idee hab, was die 4 KB da sein könnten.
Nun komm ich aber erstmal nicht wirklich weiter. Live-Debugging wird dadurch erschwert, dass der Leak ja nur im Standby auftaucht, also muss ich mich mit einem Dump-File weiter behelfen. Ich hab dafür einen Kernel-Dump, in dem der Non-Paged Pool bereits auf über 800 MB angewachsen war. Leider kenne ich mich nicht damit aus, wie man Windows-Dump-Files am besten (oder überhaupt) analysiert, z.B. mit WinDbg. Vielleicht könnte man sich den Inhalt der 4-KB-Allozierungen genauer ansehen, falls das vielleicht etwas bringen könnte? Wenn ja, wie könnte ich das machen? Wenn nicht, hat jemand andere Ideen, wie ich weiterkommen könnte?
EDIT: Es könnte sein, dass die Allozierungen im Standby laufend stattfinden, man merkt sie nur erst nach einigen Stunden, weil sie sich vorher nicht genug akkumuliert haben. Laut meiner letzten Beobachtung könnten das 4 KB etwa jede halbe Sekunde sein.
EDIT 2: Schon nach wenigen Minuten im Standby werden eine handvoll KB alloziert, und zwar immer ein Vielfaches von 4.
EDIT 3: Ich hab mittlerweile den poolfind-Befehl in WinDbg entdeckt, mit dem ich erstens die Theorie mit den 4-KB-Allozierungen bestätigen kann und zweitens jetzt die Speicheradressen dieser Allozierungen kenne. Aus dem Inhalt bin ich aber noch nicht schlau geworden, aber man sieht schon, dass fast alle Allozierungen mit dem gleichen Inhalt beginnen, und zwar mit:
41 65 6F 42 14 00 00 00 01 00 00 00 02 00 01 00 00 00 10 00 A0 40 EB C4 D2 6C E2 11 BC FD 08 00 20 0C 9A 66 00 00 04 00 00 00 00 00 00 00 04 00 05 00 00 00 03 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Scheinbar nur die erste Allozierung unterscheidet sich schon nach den ersten 21 Byte.
Interpretieren kann ich das noch nicht, Text scheint es jedenfalls nicht zu sein.
EDIT 4: Text gibt es weiter vorne. Er scheint selten der gleiche zu sein, aber es finden sich Dinge wie die Namen der einzelnen Netzwerkverbindungen auf meinem Rechner. Werde da weiter nachforschen. Allerdings habe ich schon festgestellt, dass der Speicherleck immer noch auftaucht, wenn ich den WiFi-Treiber oder den Ethernet-Treiber deaktiviere.
Dieser Beitrag wurde von adrianghc bearbeitet: 03. Juli 2019 - 01:10