FMA3-Instruktion: Windows-SMT-Bug lässt Ryzen-Systeme abstürzen

Ein Fehler, der von hochoptimiertem Code verursacht wird, kann Windows-10-Systeme mit den neuen Ryzen-CPUs vom AMD reproduzierbar zum Absturz bringen. Das berichtet der Entwickler Alexander Yee(öffnet im neuen Fenster) , dem dies bei Tests seines Programms Flops(öffnet im neuen Fenster) aufgefallen ist. Die Anwendung bewertet die Rechenleistung von Gleitkommaoperationen einer CPU und nutzt dafür spezielle x86-Befehlssatzerweiterungen wie SSE oder FMA3(öffnet im neuen Fenster) (Fused Multiply-Add 3). Bei dem Test von FMA3 mit 128 Bit Breite stürzt jedoch das gesamte System ab.

Yee hat in dem Hwbot-Forum dazu aufgerufen, seine Ergebnisse zu verifizieren. Tatsächlich haben sich einige Nutzer mit unterschiedlichen Hardware-Konfigurationen gemeldet und bestätigen den Absturz von Windows bei der Verwendung von Ryzen-CPUs. Auch wir konnten den Absturz mit einem Ryzen 7 1800X auf dem Mainboard MSI X370 XPower Gaming Titanium nachstellen und dabei die Fehlerursache zumindest etwas eingrenzen.
Windows-Fehler bei der Verwendung von SMT
Der Absturz tritt bei uns sowohl mit dem von Yee selbst bereitgestellten Binärdateien auf als auch mit der von uns kompilierten Anwendung. Der verwendete Compiler und die Toolchain scheinen darüberhinaus hier nicht das eigentliche Problem zu sein. Denn wir können ebenfalls reproduzierbar einen Absturz mit Binärdateien verursachen, die wir unter Linux mit MinGW(öffnet im neuen Fenster) für Windows crosskompiliert haben.
Interessanterweise tritt der Fehler bei uns jedoch nicht auf, wenn das Simultaneous Multithreading (SMT) der CPU abgestellt wird. Das unterstützen jedoch nicht alle Mainboards, weshalb Yee dieses Verhalten selbst nicht nachstellen(öffnet im neuen Fenster) kann. Allerdings bestätigt auch ein Nutzer des Hwbot-Forums(öffnet im neuen Fenster) , dass der Absturz bei abgeschaltetem SMT nicht auftritt.
Der Fehler ist wohl außerdem auf Windows beschränkt. Unter Linux verursacht die Anwendung unabhängig von der SMT-Nutzung bei uns keine Abstürze. Yee und andere Nutzer bestätigen ebenso, dass Linux nicht betroffen ist. Ebenso fehlerfrei ist die Ausführung der Windows-Binärdateien unter Linux mit Hilfe des Windows-API-Nachbaus von Wine.
Möglicherweise Workaround dank Microcode-Update
Dass der Absturz wie beschrieben nur unter bestimmten Umständen bei der Verwendung von Windows 10 auftritt, deutet daraufhin, dass es sich nicht um einen Fehler der Hardware selbst handelt, sondern eben um einen sehr spezifischen Fehler in Verbindung mit der SMT-Verarbeitung von Windows.
Laut dem Chief Operating Officer von Hwbot(öffnet im neuen Fenster) , Pieter-Jan Plaisier, der gute Kontakte in der Hardware-Industrie hat, werde der Fehler künftig durch ein Agesa-Microcode-Update von AMD behoben. Sollte dies geschehen, setzt AMD dabei wohl lediglich auf einen Workaround, der eventuell das Abarbeiten der FMA3-Instruktionen anpasst. Eine Stellungnahme von AMD oder Microsoft zu dem Problem gibt es noch nicht.



