Linux-Abstürze: Fehlerhafter Zufallsbefehl auf neuen und alten AMD-CPUs

Einige Linux-Systeme booten auf AMDs neuen Ryzen-Prozessoren nicht und haben auf alten APUs Probleme mit dem Suspend. Der Grund ist eine fehlerhafte Implementierung des Zufallszahlengenerators der CPU, den Systemd aufruft. Systemd arbeitet aber völlig korrekt, das Problem liegt in der CPU.

Artikel veröffentlicht am , /
Fehler beim Zufall: Einige AMD-Prozessoren implementieren den rdrand-Befehl falsch.
Fehler beim Zufall: Einige AMD-Prozessoren implementieren den rdrand-Befehl falsch. (Bild: Diacritica, Wikimedia Commons/CC-BY-SA 3.0)

Ein Bug in AMD-CPUs führt zu Abstürzen beim Booten von manchen Linux-Distributionen. Schuld daran ist ein Fehler bei der rdrand-Funktion, einem Prozessorbefehl zur Erzeugung von Zufallszahlen. Neuere Versionen von Systemd rufen diesen Befehl auf.

Stellenmarkt
  1. Software Consultant/IT-Projektmanager (m/w/d) Versandlogistik
    ecovium GmbH, Neustadt am Rübenberge
  2. Softwareentwickler (w/m/d)
    INVENOX GmbH, Garching-Hochbrück bei München
Detailsuche

Mit dem rdrand-Befehl kann eine Anwendung von der CPU eine Zufallszahl anfordern. Der Befehl gibt dabei eine Zahl zurück und meldet außerdem, ob der Befehlsaufruf erfolgreich war. Das Problem auf AMDs Ryzen 3000: Der Prozessor gibt statisch die Zahl -1 als Zufallswert zurück, meldet aber gleichzeitig, dass der Aufruf erfolgreich war.

Systemd ruft rdrand auf und verlässt sich auf korrektes Verhalten

Neuere Versionen von Systemd rufen die rdrand-Instruktion auf und stürzen ab, wenn mehrfach keine Zufallszahlen zurückgegeben werden. Eingeführt wurde das im Juli 2018 und ist dann in die Systemd-Version 240 eingeflossen. Das erklärt auch, warum das Problem nur mit bestimmten aktuellen Linux-Distributionen auftaucht. Das jüngste Ubuntu 19.04 etwa nutzt Systemd 240 und ist betroffen, die ältere Version 18.10 nutzt Systemd 239 und stürzt nicht ab.

Doch auch wenn das Problem erst durch Systemd ausgelöst wird, der Fehler liegt eindeutig in der CPU selbst. Denn Systemd verwendet die Funktion völlig korrekt und geht davon aus, dass es einen Zufallswert erhält, wenn der Prozessor ein erfolgreiches Ausführen des Befehls meldet.

Golem Akademie
  1. Kubernetes – das Container Orchestration Framework: virtueller Vier-Tage-Workshop
    11.-14.07.2022, Virtuell
  2. C++ Programmierung Grundlagen (keine Vorkenntnisse benötigt): virtueller Drei-Tage-Workshop
    01.-03.08.2022, virtuell
Weitere IT-Trainings

Wir haben das Verhalten der AMD Ryzen-CPUs getestet und konnten den Bug für die aktuelle 3000er-Generation nachvollziehen. Beim Aufruf eines kleinen Test-Programms, das nur die rdrand-Funktion aufruft und das Resultat ausgibt, erhielten wir bei mehreren Aufrufen immer den codierten Wert von -1 und eine Bestätigung, dass der Befehl erfolgreich ausgeführt wurde. Auf älteren Generation der Zen-Architektur, also den Ryzen 1000 und 2000, tritt der Fehler nicht auf und der Befehl liefert wie gewünscht eine Zufallszahl.

Probleme auch mit alten AMD-CPUs

Ein älterer Kernel-Bug weist darauf hin, dass das Problem auch in älteren AMD-Prozessoren auftauchen kann. Laut diesem Bugreport, der bereits 2014 erstellt wurde, gab es Probleme mit dem rdrand-Befehl bereits bei einem Prozessor aus der Jaguar-Reihe von AMD. Auch die initiale Fehlermeldung im Bugtracker von Systemd verweist auf ältere APUs von AMDs Carrizo-Reihe mit Puma-Architektur. Bei den älteren CPUs betrifft der durch Systemd ausgelöste Fehler den Meldungen zufolge jedoch nicht direkt den Boot, sondern zunächst wohl nur den Ruhezustand (Suspend).

Offenbar blieb das Problem aber lange unentdeckt, da nur wenige Programme rdrand direkt aufrufen. Üblicherweise verwenden Anwendungsprogramme die Zufallsfunktionen des Kernels wie /dev/urandom oder den getrandom-Syscall. Der Kernel verwendet selbst zwar auch rdrand, er nutzt dessen Ausgabe aber nur als eine von vielen Zufallsquellen, um den Zufallszahlengenerator des Betriebssystems zu betreiben. Das hat auch den Grund, dass einige Entwickler nicht darauf vertrauen, dass die CPU korrekte Zufallszahlen liefert.

Die Probleme fallen wohl erst jetzt in größerem Maße auf, weil Systemd den rdrand-Befehl direkt nutzt. Inzwischen ist in Systemd ein Workaround eingeführt worden, der dazu führt, dass unsinnige Werte (0 oder -1) vom Zufallszahlengenerator verworfen werden.

Besonders kurios an dem Fehler ist, dass der Befehl auf den älteren Ryzen-Chips wie gewünscht funktioniert und damit auch aktuelle Linux-Distribution mit dem aktuellen Systemd problemlos booten. Sowohl auf den Vorgänger-Chips als auch auf den Nachfolgern treten jedoch die beschriebenen Probleme auf. Ein korrekter Fix wäre vermutlich über den CPU-Microcode möglich, dieser müsste aber direkt von AMD kommen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


mambokurt 12. Jul 2019

https://www.golem.de/news/ryzen-3000-amd-behebt-fehlerhaften-zufall-durch-bios-update...

mambokurt 12. Jul 2019

https://www.golem.de/news/ryzen-3000-amd-behebt-fehlerhaften-zufall-durch-bios-update...

mambokurt 12. Jul 2019

Faktisch ist das richtig, die sind an der Stelle noch nicht einsatzfähig. Wenn du...

arthurdont 11. Jul 2019

...auch wenn deren Code hier ohne den CPU-Bug problemlos funktionieren würde. Nur ein...



Aktuell auf der Startseite von Golem.de
Forschung
Blaualge versorgt Computer sechs Monate mit Strom

Ein Forschungsteam hat einen Mikroprozessor sechs Monate ununterbrochen mit Strom versorgt. Die Algen lieferten sogar bei Dunkelheit.

Forschung: Blaualge versorgt Computer sechs Monate mit Strom
Artikel
  1. EC-Karte: Trotz Kartensperre können Diebe stundenlang Geld abheben
    EC-Karte
    Trotz Kartensperre können Diebe stundenlang Geld abheben

    Eine Sperre der Girocard wird nicht immer sofort aktiv. Verbraucher können sich bereits im Vorfeld schützen.

  2. Swisscom-Chef: Vermasselt habe ich nichts
    Swisscom-Chef
    "Vermasselt habe ich nichts"

    Urs Schaeppi gibt den Chefposten bei Swisscom auf. Sein Rückblick auf neun Jahre Konzernführung fällt ungewöhnlich offen aus.

  3. EV Driver Survey: Elektroautos bei IT-Experten besonders beliebt
    EV Driver Survey
    Elektroautos bei IT-Experten besonders beliebt

    Fahrerlebnis und Technik sind für Fahrer von Elektroautos der größte Zusatznutzen dieser Mobilitätsform. Fast alle würden wieder ein E-Auto kaufen.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • LG OLED TV (2021) 77" günstig wie nie: 1.771,60€ statt 4.699€ • Grakas günstig wie nie (u. a. RTX 3080Ti 1.285€) • Samsung SSD 1TB (PS5-komp.) + Heatsink günstig wie nie: 143,99€ • Microsoft Surface günstig wie nie • Jubiläumsdeals MediaMarkt • Bosch Prof. bis 53% günstiger[Werbung]
    •  /