Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Symptom

När du skapar ett program med hjälp av Microsoft Visual C++ 2013 programmet kraschar och felmeddelandet "Ogiltig instruktion" undantag. Detta beror på att vissa flyttalsoperationer bibliotek funktioner i Visual C++ 2013 x64 C Runtime (CRT) korrekt inte kontrollera om vissa AVX och FMA3 instruktioner finns innan du försöker använda dem med funktionerna. Om anvisningarna inte är tillgängliga för orsaka anrop till dessa funktioner ogiltig instruktion undantag (0xc000001d). Påverkade funktioner inkluderar logg, log10, och pow och andra.

Det här problemet sannolikt att ske i följande scenarier:

  • På en gammal version av Windows-operativsystem som inte stöder AVX state spara (till exempel Windows Vista) om den används på en dator som stöder AVX instruktionsuppsättning

  • Om AVX tillstånd sparar uttryckligen är inaktiverad i operativsystemet startkonfiguration

  • I förinstallera Windows-miljö (Windows PE)

    Obs! Windows PE stöder inte AVX tillstånd sparas.


Det här problemet har rapporterats på Microsoft Connect:

x64 log()-funktionen används vpsrlq AVX-instruktion utan hänsyn till operativsystemet (så kraschar på Vista x64)

Visual Studio 2013 RTM: C++ x64 kod generation bug AVX2 instruktioner

Orsak

Det här problemet uppstår eftersom Visual C++ 2013 x64 C Runtime inte kontrollerar om operativsystemet stöder AVX spara tillstånd innan den försöker köra instruktioner AVX eller FMA3.

Lösning

Om alla berörda C++ binärfilerna som skapats med Visual C++ 2013 använder C Runtime DLL (msvcr120.dll), installera uppdaterade Microsoft Visual C++ 2013 Redistributable – 12.0.40660.0 eller en senare version.

Om de berörda binärfilerna för C++ länkar Visual C++ 2013 C Runtime statiskt, måste du uppdatera din installation av Visual Studio 2013 genom att installera snabbkorrigeringen 3174417 och återskapar och omdistribuera berörda binärfilerna.









Obs! Det här problemet påverkar inte äldre versioner av Visual C++ C Runtime (Visual C++ 2012 och tidigare versioner). Problemet korrigerades innan den första versionen av Universal CRT som används av Visual C++ 2015.

Microsoft Download Center

Om du vill uppdatera den länkade statiskt Visual C++ 2013 C Runtime 3174417 snabbkorrigering har getts ut som en endast hämtning-uppdatering och distribueras inte via Windows Update. Det finns på Microsoft Download Center-webbplats:

Download Hämta paketet nu.

Uppdatera dynamiskt länkade Visual C++ 2013 C Runtime dll, en uppdaterad redistributable är tillgänglig. Mer information finns i följande artikel i Microsoft Knowledge Base:

3179560 uppdatering för 2013 för Visual C++ och Visual C++ Redistributable Package

Temporär lösning

Undvik det här problemet genom att inaktivera FMA3 i math-biblioteket om du påverkas av problemet. Du kan fråga om systemet stöder AVX instruktioner genom att anropa GetEnabledXStateFeatures och uttryckligen inaktivera AVX i CRT genom att anropa _set_FMA3_enable(0).

Mer information finns i arbeta med XState kontextpå webbplatsen MSDN.

Funktionen _set_FMA3_enable(0) är deklarerad i < math.h > och det är tillgängligt endast när du skapar för x64. (Det här problemet påverkar bara x64 bibliotek.) Detta medför att återgå till med icke FMA3 implementeringar math-biblioteket.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×