Kritischer Softwarefehler: RyuJIT verändert willkürlich Parameter

In Microsofts aktuelles .Net 4.6 hat sich ein gravierender Fehler eingeschlichen. Dessen Just-in-Time-Compiler RyuJIT verarbeitet Eingaben nicht korrekt. Microsoft arbeitet bereits an einem Patch. So lange sollten Entwickler auf ein Upgrade auf .Net 4.6 verzichten.

Artikel veröffentlicht am ,
Entwickler bei Stack Overflow entdeckten einen Fehler in .Nets RyuJIT-Compiler, nachdem dort das Caching nicht mehr korrekt funktionierte.
Entwickler bei Stack Overflow entdeckten einen Fehler in .Nets RyuJIT-Compiler, nachdem dort das Caching nicht mehr korrekt funktionierte. (Bild: Stack Overflow/Screenshot: Golem.de)

Der Fehler ist nur schwer aufzuspüren und kann gravierende Auswirkungen beim Verarbeiten von Code haben. In der aktuellen Version 4.6 von Microsofts Entwicklungsumgebung .Net hat sich ein Bug in den Just-in-Time-Compiler (JIT) RyuJIT in der 64-Bit-Version eingeschlichen. Er verarbeitet ihm übergebene Parameter nicht korrekt. Entdeckt wurde der Fehler von den Systemadministratoren und Entwicklern Nick Craver und Marc Gravell bei Stack Overflow. Microsoft arbeitet nach eigenen Angaben an einem Patch, der demnächst veröffentlicht werden soll.

  • Mit diesem Code spürten Entwickler bei Stack Overflow einen Fehler in RyuJIT auf. (Bild: Stack Overflow)
  • Während der Verarbeitung wurden Parameter willkürlich verändert. (Bild: Stack Overflow)
Mit diesem Code spürten Entwickler bei Stack Overflow einen Fehler in RyuJIT auf. (Bild: Stack Overflow)
Stellenmarkt
  1. Software Ingenieur*in (d/m/w) Equipment Integration
    OSRAM Opto Semiconductors Gesellschaft mit beschränkter Haftung, Regensburg
  2. Softwareentwickler (m/w/d) Java Full Stack & Cloud
    TraceTronic GmbH, Dresden
Detailsuche

Der Bug tritt dann auf, wenn die Optimierungen aktiviert sind. Bei der Optimierung des Endaufrufs (Tail Call Optimization) werden eingangs übergebene Parameter von RyuJIT willkürlich verändert. Craver und Gravell gaben dem Fehler daher den Namen Tail Call Bug. Bei Stack Overflow führte er dazu, dass das HTTP-Caching nicht korrekt funktionierte und so zu einer Überlastung der Server führte.

Nur schwer aufzuspüren

Bei der Entwicklung und Testphase in der Entwicklungsumgebung Visual Studio 2015 tritt der Fehler nicht auf. Wird ein Debugger eingesetzt, verschwindet der Fehler ebenfalls. Erst beim produktiven Einsatz macht er sich bemerkbar.

Besonders gravierend seien die Auswirkungen des Fehlers dann, wenn .Net etwa im medizinischen Bereich verwendet wird, schreiben die Entwickler bei Stack Overflow in einem Blog. Ihr Rat: Über einen Registry-Eintrag lässt sich RyuJIT vorübergehend deaktivieren. Wer .Net noch nicht auf Version 4.6 aktualisiert hat, sollte damit noch warten.

Deaktivieren und abwarten

Golem Akademie
  1. Einführung in die Programmierung mit Rust: virtueller Fünf-Halbtage-Workshop
    21.–25. März 2022, Virtuell
  2. Jira für Anwender: virtueller Ein-Tages-Workshop
    10. November 2021, virtuell
Weitere IT-Trainings

Ähnliches rät auch Microsoft in einem Advisory und weist darauf hin, dass RyuJITs Vorgänger JIT64 immer noch Teil des .Net-Frameworks ist und verwendet werden kann. Wer in F# programmiert, sollte mit einem Update auf .Net 4.6 warten, denn allem Anschein nach sind Anwendungen, die in der Programmiersprache entwickelt wurden, besonders betroffen. Selbst Anwendungen, die noch für .Net 4.0 entwickelt wurden, könnten aber von dem Fehler betroffen sein. Microsoft will einen Patch schnellstmöglich zur Verfügung stellen.

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


Aktuell auf der Startseite von Golem.de
CoreELEC/LibreELEC
Smart-TV mal anders

Eine TV-Box Marke Eigenbau bringt Spaß und Gewissheit über unsere Daten. Die Linux-Distributionen CoreELEC und LibreELEC eignen sich da besonders.
Eine Anleitung von Sebastian Hammer

CoreELEC/LibreELEC: Smart-TV mal anders
Artikel
  1. Softwarepatent: Uraltpatent könnte Microsoft Millionen kosten
    Softwarepatent
    Uraltpatent könnte Microsoft Millionen kosten

    Microsoft hat eine Klage um ein Software-Patent vor dem BGH verloren. Das Patent beschreibt Grundlagentechnik und könnte zahlreiche weitere Cloud-Anbieter betreffen.
    Ein Bericht von Stefan Krempl

  2. Amazon: Fire TV Stick 4K Max erhält erweiterte Heimkinofunktion
    Amazon
    Fire TV Stick 4K Max erhält erweiterte Heimkinofunktion

    Mit einem geplanten Update kann der Fire TV Stick 4K Max den Klang anderer Zuspielgeräte auf Echo-Lautsprechern ausgeben.

  3. Krypto: Angeblicher Nakamoto darf 1,1 Millionen Bitcoin behalten
    Krypto
    Angeblicher Nakamoto darf 1,1 Millionen Bitcoin behalten

    Ein Gericht hat entschieden, dass Craig Wright der Familie seines Geschäftspartners keine Bitcoins schuldet - kommt jetzt der Beweis, dass er Satoshi Nakamoto ist?

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 • Kingston PCIe-SSD 1TB 69,90€ & 2TB 174,90€ • Samsung Smartphones & Watches günstiger • Saturn-Advent: Xiaomi Redmi Note 9 Pro 128GB 199€ • Alternate (u. a. Razer Opus Gaming-Headset 69,99€) • Release heute: Halo Infinite 68,99€ • MM-Aktion: 3 Spiele kaufen, nur 2 bezahlen [Werbung]
    •  /