Windows 10 Update-Fehler 0xc0000017 (RAMdisk Speicherplatzmangel)

[English]Manche Nutzer von Windows 10 (aber auch von Windows 8.1) laufen in einen unschönen Fehler. Nach Installation eines Updates bootet Windows nicht mehr und wirft den Fehlercode 0xc0000017. Zeit, einen Blick auf die Sachlage zu werfen und eine Erklärung der Hintergründe zu liefern.


Werbung



Details des Fehlercodes 0xc0000017

Der Fehler tritt auf, wenn Windows 10 (oder Windows 8.1) nach der Installation eines Updates wieder booten soll. Es erscheint ein blauer Bildschirm mit der folgenden Meldung:

Für die Erstellung eines RAMDISK-Gerätes nicht genügend Speicherplatz verfügbar
Fehlercode: 0xc0000017

Ich selbst war vor einiger Zeit bei der Installation einer Insider-Preview in der misslichen Lage, dass mir der folgende blaue Bildschirm angezeigt wurde.

Recovery-Fehler 0xc0000017

Mein Versuch, zum Fehlertext noch etwas mehr mit Hilfe eines Error-Lockup-Tools herauszufinden, führte nicht wirklich weiter. Der Fehlercode 0xc0000017 steht für STATUS_NO_MEMORY – Für den angegebenen Vorgang sind nicht genügend Quoten für virtuellen Speicher oder die Auslagerungsdatei vorhanden.

Die Fehlerursache erklärt

Statt jetzt mal schnell ein paar Befehle einzutippen, möchte ich einige Hintergründe erläutern. Das hilft möglicherweise dem einen oder anderen Nutzer zu verstehen, was passiert ist.

Windows PE, Update-Installationen und RAM-Disks

Update-Installationen erfordern einen Neustart, da nur dann die während eines laufenden Windows blockierten Dateien ersetzt werden können. Dazu bootet ein sogenanntes Windows PE (PE steht für Preinstall Environment), in dessen Umgebung die benötigten Dateioperationen durchgeführt werden. Ist diese Transaktion abgeschlossen, bootet die Maschine neu und das eigentliche Windows wird dann wieder hochgefahren.

Windows PE wird aber in einer RAM-Disk geladen und ist dabei darauf angewiesen, dass eine bestimmte Anzahl an Speicherseiten zusammenhängend belegt werden können. Der Fehler 0xc0000017 tritt wohl bei dem Versuch auf, während des Bootvorgangs für die Windows PE-Umgebung eine RAM-Disk anzulegen. Das Problem dabei: Eigentlich müsste noch genügend RAM vorhanden sein. Aber da scheint etwas zu scheitern. Auf dieser Webseite gibt es eine ‘geschredderte’ Erklärung, die wohl durch einen automatischen Übersetzer entstanden ist. Es sind nicht mehr genügend zusammenhängende Speicherblöcke vorhanden, um die RAM-Disk entsprechender Größe einzurichten.

Aber warum ist das eigentlich so? Zum Verständnis hole ich mal ein wenig aus.

Predictive Failure Analysis (PFA) in Windows

In Windows gibt es einen Mechanismus, der ECC-Fehler im Speicher analysiert und das Betriebssystem vor der Verwendung fehlerhafter Speicherblöcke im RAM schützen soll. Dazu hat Microsoft in der Windows Hardware Error Architecture (WHEA) eine Predictive Failure Analysis (PFA) Unterstützung zur Erkennung von ECC (Error Correction Code) Speicherfehlern implementiert.


Werbung

Dazu überwacht WHEA die ECC-Werte von Speicherseiten, auf denen bereits ECC-Fehler entdeckt wurden. Übersteigt die Zahl der ECC-Speicherfehler einen Schwellwert während eines konfigurierbaren Zeitintervall, versucht WHEA die betreffende Speicherseite offline zu nehmen. Dazu wird die betreffende Speicherseite in der BCD-Datenbank (BCD-Store, Boot Configuration Data Store) von Windows als fehlerhaft eingetragen.

Das bedeutet also, dass im ungünstigsten Fall im laufenden Betrieb oder durch fehlerhafte BCD-Einträge (z.B. während des Updates) ziemlich viele fehlerhafte Speicherblöcke markiert werden können. Beim Start kann Windows dann erkennen, dass die Speicherbank viele Fehler aufwies und vermeidet deren Verwendung für kritische Operationen, die im RAM-Speicher ausgeführt werden müssen. Das Ganze ist im Microsoft-Dokument Predictive Failure Analysis (PFA) beschrieben.

An dieser Stelle ist nicht ganz klar, ob sich der ECC Wert auf das RAM oder die virtuelle Auslagerungsdatei bezieht. In folgendem Text nehme ich an, dass ECC-Fehler sich auf das RAM beziehen.

Das BCD-Problem mit dem Bad Memory

Fakt ist, dass Windows keinen Mechanismus bereitstellt, um die einmal wegen zu vieler ECC-Fehler offline genommenen Speicherblöcke wieder zu bereinigen.

Windows does not provide an automated mechanism for clearing this list from the BCD system store. When the failing system memory is replaced, a system administrator must clear this list manually by using the BCDEdit command-line tool. If the list is not cleared, Windows will continue to exclude the memory pages in the list from being used by the system, even if the failing memory modules have been replaced.

Das obige Zitat lässt sich in diesem Microsoft-Dokument nachlesen. Das heißt: Es kann durchaus sein, dass der RAM-Speicher fehlerfrei arbeitet, aber wegen aufgetretener ECC-Fehler offline genommen wurde. Es gilt also, den BCD-Store von diesen Einträgen zu bereinigen.

Bad Memory-Einträge im BCD-Store bereinigen

Microsoft ist auch noch so freundlich, einen Verweis auf dieses Dokument mitzuliefern. Dort findet man den Hinweis, dass man eine administrative Eingabeaufforderung (Als administrator ausführen) öffnen und dann das Programm bcdedit verwenden kann. Mit der Anweisung:

bcdedit /enum {badmemory}

lassen sich die Einträge der fehlerhaften Speicherblöcke anzeigen. Auf meinen Systemen habe ich nachgesehen, es sind keine fehlerhaften Speicherblöcke notiert.

RAM-Defekte auslesen

Im EaseUS-Beitrag hier wird bcdedit /enum all als Befehl angegeben. Kann man gerne tun, bekommt dann einen ganzen Wust an Daten geliefert und muss sich den Abschnitt RAM-Defekte rauswühlen. Zeigt wieder einmal, dass man wissen sollte, was man tut.

Werden auf beim System RAM-Defekte aufgelistet, gilt es, den Fehlerspeicher zurückzusetzen. Dies ist mit dem nachfolgenden Befehl möglich.

bcdedit /deletevalue {badmemory} badmemorylist

Beachtet, dass badmemorylist kein Platzhalter ist, der Befehl ist genau so wie angegeben einzutippen. Bei mir löst der Befehl aber den nachfolgend gezeigten Fehler aus, weil keine Speicherfehler in der BCD-Datenbank eingetragen sind.

Ich habe dann als Gegenprobe in einem Testsystem einige Speicherblöcke mit dem Befehl:

bcdedit /set  {badmemory} badmemorylist 0xB7 0xB8

als fehlerhaft markiert und dann die Abfrage sowie den Befehl zum Löschen eingegeben.

Die Befehlssequenz ist in obigem Bild zu sehen. Der Befehl zum Löschen der Einträge wird nun erfolgreich ausgeführt.

Anmerkung: Mit dem Befehl bcdedit /set  {badmemory} badmemorylist lassen sich Speicherseiten sperren (siehe und hier). Die Blöcke besitzen eine Größe von 4 K, so dass man also ein System mit einem defekten Speicherriegel versuchsweise durch Blockieren der Speicherseiten ‘reparieren’ könnte. Das kann helfen, wenn sich Windows nicht installieren lässt. Abhängig vom BIOS der Maschine kann es auch sein, dass die Option ‘Memory Hole Remapping’ deaktiviert werden muss (siehe).  Aber das Feld ist nicht Gegenstand des Artikel.

Nach dem Zurücksetzen des BCD-Store sollte Windows wieder booten bzw. das Update installiert werden können.

Wie fixe ich das bei einem kaputten Windows?

Nun bleibt nach den Erläuterungen der obigen Abschnitte die Frage: Wie kann ich das Problem mit Windows lösen.

Windows kann noch booten

Der idealere Fall besteht darin, dass Windows zwar mit dem Fehler 0xc0000017 scheitert. Aber die Startreparatur bringt das System wieder dazu, zu booten. Dann meldet man sich an einem Benutzerkonto an, ruft eine administrative Eingabeaufforderung auf und gibt den Befehl:

bcdedit /deletevalue {badmemory} badmemorylist

gemäß meinen obigen Ausführungen zur Bereinigung der Fehlerliste im BCD-Store ein.

Windows bootet nicht mehr

Kommt man nicht mehr über die nachfolgend angezeigte blaue Startseite hinaus und Windows beharrt darauf, dass man ein Recovery-Tool zur Reparatur benötigt?

Recovery-Fehler 0xc0000017

Sie können dann versuchen, ob Sie über die Funktionstaste F8 auf die Starteinstellungen zugreifen und dann über die Reparaturoptionen auf die Eingabeaufforderung unter Windows PE zugreifen kann. Meist wird das aber nichts bringen, das Windows PE ja streikt. Dann bleibt eigentlich nur die Offline-Reparatur des BCD-Store.

  1. Booten Sie das Windows-System mit einem USB-Stick oder einer DVD, auf der ein Notfall-Windows oder ein Installationsabbild vorliegt, um über die Computerreparaturoptionen in Windows PE zu gelangen.

2. Dann führen Sie die bcdedit-Befehle zur Reparatur im Offline-Modus in der Eingabeaufforderung aus.

Hinweise, wie man das System mit einem Installationsdatenträger über die Computerreparaturoptionen in Windows PE bootet, finden sich in den nachfolgend verlinkten Beiträgen und im Artikel Windows 10: Defender Offline Scan verursacht Bootschleife.

Die Syntax für bcdedit zum Zugriff auf den Offline-BCD-Store lautet dabei (siehe):

bcdedit /enum all /store <full path and file name of store>

Bleibt noch die Frage, wo sich der BCD-Store findet. Windows erwartet die versteckte Systemdatei auf der aktiven Partition im Ordner Boot. Der Befehl könnte konkret unter einem Windows PE-Notfallsystem folgendermaßen lauten:

bcdedit.exe /deletevalue {badmemory} badmemorylist c:\boot\bcd

Hier wäre das logische Laufwerk c: das Bootmedium. Zu beachten ist, dass Windows PE meist auf dem logischen Laufwerk X: läuft. Das logische Laufwerk c: muss daher nicht unbedingt die Partition mit dem kaputten Windows BCD-Store sein. Man kann in der Eingabeaufforderung den Befehl notepad.exe eintippen.

Im Fenster des Windows-Editors wählt man Datei / Öffnen gehen und stellt im Dialogfeld das Feld Dateityp auf “Alle Dateien” um. Dann hat man mit dem Dialogfeld Öffnen quasi einen Mini-Dateimanager, über den man die Laufwerkwerke inspizieren kann. Dort lässt sich prüfen, wo das das logischen Laufwerk System reserviert und wo das Windows-Laufwerk zu finden ist.

Der hier im Blog-Beitrag skizzierte Ansatz lässt sich übrigens nicht nur unter Windows 10, sondern von Windows 7 bis Windows 10 und auch unter Windows Server einsetzen.

Ähnliche Artikel
Tipp: In Windows PE booten, wenn die DVD nicht starten will
Rettungsanker, falls Windows nicht mehr bootet
First Aid: Datenrettung, wenn Windows 7 versagt
Windows PE im UEFI- oder BIOS-Mode booten
Notfallhilfe mit Windows PE, falls Windows 8 nicht startet
Windows PE 4.0: Diese Programme laufen
Windows PE: Reparaturdatenträger erstellen Teil 1
Windows PE: Diese Programme sind verfügbar Teil 2
Wiederherstellungslaufwerk mit Win RE erstellen Teil 3


Werbung

Dieser Beitrag wurde unter Windows 10, Windows 8.1 abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

23 Kommentare zu Windows 10 Update-Fehler 0xc0000017 (RAMdisk Speicherplatzmangel)

  1. Potrimpo sagt:

    Sehr schöner Beitrag

  2. christian klein sagt:

    Hallo Günter,

    bin begeistert, was man mit internen Mitteln bei Windows so alles in Erfahrung bringen kann.

    Habe auf einem System von 2008 mit WinX mal die ECC-Fehler überprüft.
    Kein einziger Eintrag in der badmemoryliste.

    Vielen Dank!

    Schöne Grüße aus Bayern
    christian

    • Günter Born sagt:

      Danke für die Rückmeldung – ist auch meine Erfahrung. War auch ein wenig eine Art ‘Sternstunde’ als ich vor zwei Tagen durch Zufall in MS Answers auf das Problem stieß und überall nur Voodoo oder mache dies und es klappt wieder zu finden war.

      Hab dann ein wenig recherchiert, nachgedacht und den Blog-Beitrag erstellt. Vielleicht hilft es dem einen oder anderen Server-Admin mal weiter oder rettet dessen Hintern. Solche Beiträge kann ich halt nicht täglich und in ‘en masse’ bringen – da habe ich schon was dran gesessen – zumal ich einen Weg finden musste, um badmemory auf der sauberen Maschine zu simulieren. Aber dank Google habe ich hoffentlich alles korrekt aufwischen können. So was hätte es eigentlich von Microsoft geben sollen ;-).

  3. Was ich nur nicht ganz verstehe Günter, wieso Windows ein Badmemory setzt, ok ich weiß wenn Windows ein Problem (Sektor Fehler) auf einem Datenträger hat schreibt der das ja auch irgendwo hin.

    Aber wie kann das dann sein das man badmemory Fehler beheben kann, oder hab ich da jetzt was nicht ganz verstanden?

    Dann müsste man ja auch Sektorfehler beheben können oder Überschreibt der dann einfach die Fehlermeldung in den badmemory?

    • Günter Born sagt:

      Wenn ich mich nicht gänzlich verrannt habe, werden ECC-Fehler im RAM per Monitoring überwacht. Triggert diese Überwachung einen Schwellenwert, wird die Page als ‘unzuverlässig’ im BCC-Store markiert. Das ist eine Vorsichtsmaßnahme. Über den Grund erfährt man nichts – könnte ja auf kurzzeitige Spannungspitzen zurückzuführen sein – oder irgend ein Prozess schreibt schlicht Unsinn in den Abschnitt des BCC-Store. Führt dann dazu, dass diese Speicherseite im RAM nicht mehr für kritische Sachen genutzt wird. Das heißt aber nicht, dass der Speicher wirklich kaputt ist. Es könnte ja auch ein Fehler durch Timing-Probleme sein, die durch Übertaktung oder was auch immer, auftreten. Da nie etwas zurückgesetzt wird, ergibt sich ein möglicherweise unstimmiges Fehlerbild.

      Wie im Blog-Beitrag geschrieben: Auf meinem Produktivsystem, welches viele Jahre läuft, ist badmemory leer. Durch den im Blog-Beitrag skizzierten Ansatz wird also nichts repariert. Das Zurücksetzen der Kennung bewirkt nur, dass das System eine neue Chance bekommt und Windows PE in nun zusammenhängenden RAM-Bereiche geladen werden kann. Die RAM-Disk hat beim nächste Start wieder genügend Speicher und Windows PE bootet. Hat der RAM-Riegel ein Problem, wird der Fehler durch ECC-Bursts irgendwann erneut auftreten – aber für den Zeitraum der Update-Installation ist auf jeden Fall Ruhe. Ergo könnte man ab diesem Zeitpunkt ja das badmemory als Admin von Zeit zu Zeit monitoren. Kommt wieder eine Anzeige, hat das System ein Problem. Diesen Fall wird man dann durch Speichertests bestätigen oder widerlegen müssen.

      Das ist auch der Grund, warum ich den Artikel mal etwas breiter angelegt habe und nicht nur den bcdedit-Befehl aufgeführt habe. So kann jeder, der ECC-Fehler im badmemory-Bereich des BCD-Store gemeldet bekommt, reagieren und nachdem Windows wieder lauffähig ist, nachsehen, woran es möglicherweise liegt und ob ein Problem mit dem Speicher existiert. Speziell im Bereich Windows Server würde ich als Administrator reagieren.

      Hoffe, es ist klarer geworden.

      • Okay, aber einen Server würde ich vielleicht auch nicht gerade übertakten 😉

        Also mir ist dieser Fehler in meiner bisherigen Laufbahn noch nie untergekommen, aber da ich viel mit “bcdedit” arbeite vor allem beim Partitionieren als auch Formatieren ist es gut zu wissen das man so etwas mit bcdedit auch machen kann.

        Alles in allem ein guter Artikel, Danke schön Günter!

  4. Tim sagt:

    …braucht es dann nicht aber auch speziell ECC RAM?

    Oder ist ECC heute in jedem Speicherriegel enthalten? Oder wirds jetzt rein per Software “überprüft”?

    Irgendwie war da doch mal was mit ECC und non-ECC Ram… für Server sinnvoll und sonst vernachlässigbar…

    • Günter Born sagt:

      Ja ECC ist m.W. nur in ECC-RAMs enthalten.

      Aber: Reitet bitte nicht so sehr an Stichworten wie Übertaktung, RAM-Fehler etc. herum. Das sind Beispiele von mir, die ich hier eingestreut habe.

      Mein Verdacht ist, dass auch durch fehlerhafte Schreibvorgänge badmemory-Einträge bei Update-Installationen gesetzt werden. Anders sind folgende Beobachtungen nicht zu erklären:

      * Plötzlich trifft es bei einem Upgrade/Update sehr viele Benutzer, die dann mit dem Fehler herumrennen.

      * Der in obigem Artikel gezeigte Screenshot des Fehlers stammt aus einer virtuellen Maschine mit Windows 10 und trat bei einer Insider Preview Update-Installation auf.

      Im letzten Fall lief die VM auf meiner Produktionsmaschine als Host – und die wies, ausweichlich meiner obigen Screenshots keine ECC-Fehler auf. Ergo kann die VM auch keine ECC-Speicherfehler haben.

      • Tim sagt:

        Ich wollt wirklich nicht rumreiten, sondern nur nachhaken.

        Wär ja durchaus möglich, das man sowas als Software Feature ausprobiert und ich kannte halt nur die alte Hardware basierte ECC Geschichte.

        Dieser Punkt war halt nicht im Artikel erwähnt, so das @christian klein vielleicht schon was überprüft zu meinen glaubt, was bei ihm vielleicht gar nicht geht, denn wer hat schon solche Module geschweige denn, die restliche Hardware Unterstützung dazu, in seinem System?
        Ohne das kann MS dahingehend normalerweise auch nix auslesen, oder als defekt makieren… oder versteh ich das verkehrt? Nur deshalb fragte ich nach, aus interesse, kann sich ja mal was ändern… 😉

        ECC Module sind schließlich selten, teuer und langsamer
        Außer bei uralten IBM Maschinen und bei Servern findet man die Dinger ja normal nicht in freier Wildbahn ;).
        Zumindest mir sind die Dinger sehr selten untergekommen.

      • Tim sagt:

        “Mein Verdacht ist, dass auch durch fehlerhafte Schreibvorgänge badmemory-Einträge bei Update-Installationen gesetzt werden.”

        Wie wäre es mit meinem Verdacht?
        Microsofts Entwicklerhaufen entwirft auf einem System, das was nachher funktionieren soll, nur leider eben nicht auf allen Systemen. Was wir bekommen ist doch keine installation mehr, sondern nur ein Image. Dazu kommt schlamperei, Zeitdruck und junge Entwickler, denen von der Ausbildung her schon beigebracht wird: Patchen kann man danach immer noch.

        Ein Tippfehler an irgendeinem Punkt, oder ein System das warum auch immer ein wenig anders reagiert reicht, um das ganze kippen zu lassen.
        Herr Born haben Sie mal versucht einen Wiederherstellungdatenträger, wie man ihn von Notebooks kennt zu erzeugen? Laut MS Dokumentation ist der Fummelkram gar nicht so schwer umzusetzen… theoretisch… Normal kein Hexenwerk. Aber…

        Dort findet man dann auch genau die ganzen Felerbilder, die sie grade beschreiben. Das hat mit Memory überhaupt nix zu tun, sondern nur mit den Memory Inhalten…

        Das ganze ist ein Flickwerk… seitens der Software genau wie seitens der Dokumentation…

        • Tim sagt:

          Das vieles Glücksspiel ist, kennt jeder der mal mit SysPrep beschäftigt war und nach Stunden arbeit und einrichtung beim finalisieren betete, dass das Image diesen Vorgang überlebt…

  5. Marc sagt:

    Danke für deinen Beitrag Günter.

    Mich würde mal interessieren bei welchem MS-Update der beschriebene Fehler aufgetreten ist? KonntestDu das eingrenzen ?

    • Günter Born sagt:

      Bei mir war es eine der letzten Insider Previews 16266 oder so. Ist schon ein paar Tage her – und dort hatte ich das Wissen aus obigem Blog-Beitrag noch nicht.

      • Marc sagt:

        Alles klar.

        Dankeschön

      • Ralf sagt:

        Den Fehler gibt es schon länger. Ich hatte ihn vor zwei Jahren bei dem W10-Upgrade. Lies sich dann mit den von Dir beschriebenen Befehlen beheben. Und da der PC seitdem problemlos läuft, sagt der Fehler sicher nichts über den Zustand des RAM aus (vielleicht eher über Problemsituation, wo Windows selbst etwas ins Trudeln gerät).

  6. Bernd sagt:

    Ich habe auch den Hinweis fehler-0xc0000017-ramdisk bekommen und bin dann
    wie oben angegeben vorgegangen. Es wird mir zwar die Fehlerliste angezeigt. Wenn ich dann aber zur Löschung den von Ihnen angegebenen Befehl

    „bcdedit /deletevalue {badmemory} badmemorylist“

    angebe und „Enter“ drücke, sagt das System: Falscher Parameter

    Woran kann das liegen????

  7. Tinu sagt:

    Ich habe hier ein XMG 726 Laptop mit einem Win 10 Pro 1607 … Macrium Reflect inklusive Rescue Partition installiert. Die Maschine hat eine 512 GB SSD über NVE und 32 GB RAM. Keine defekten Memory-Blöcke, Disk in Ordnung.

    Virenscanner ist ein aktuelles Avira Virus Pro, keine anderen Dinger.

    Dennoch, jeder Updateversuch auf 1703 verreckt mit diesem RAM Disk Error. Es nervt mich langsam gewaltig. Ein F9 auf das 1607 Windows und das startet.

    Hat mir noch wer einen guten Tip? Wäre extrem dankbar, wenn ich das endlich mal korrigieren könnte.

    Danke Euch

    • Günter Born sagt:

      Als erstes würde ich mal Avira runter werfen und deren Clean Tool ausführen, um Installationsreste zu beseitigen. Dann wäre Macrium Reflection samt Rettungspartition an der Reihe. Genau solche Goodies hauen ihre Filtertreiber in die IO-Aufrufe von Windows, wo es dann beim Start knallt.

      • tinu sagt:

        Weder Avira noch Macrium waren das Problem … es war simpel und ergreifend wieder mal der Display Driver. Und das in eben erst in der Data Migration Phase …

        Danke für die Antworten

  8. Kurt sagt:

    Super Beitrag. Hat mir echt geholfen von dem blöden -Fehler-0xc0000017-ramdisk- weg zu kommen.
    Danke

  9. Winfried Riemenschneider sagt:

    Danke für den ausführlichen Beitrag. Für mich als normaler User sehr verständlich geschrieben. Hatte auf meinem alten Medion PC den Fehler Oxc0000017 seit dem Win 10 update July 2017. Windows hatte ich bereits früher von Win 7 auf Win 10 32 Bit umgestellt. Mit bcdedit /enum {badmemory} habe ich eine lange Liste mit Fehlern bekommen. Mit bcdedit /enum /deletevalue {badmemory} badmemorylist die Liste erfolgreich gelöscht.
    Danach lief das Update ohne Probleme durch.

    Vielen Dank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.