CORREÇÃO: Programas baseiam-se no Visual C++ 2013 falha com a exceção de "Instrução ilegal"

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 3174417
Sintomas
Quando você cria um programa usando o Microsoft Visual C++ 2013, o programa falha e você recebe uma exceção "Instrução ilegal". Isso ocorre porque algumas funções da biblioteca de matemática de ponto flutuante em tempo de execução do Visual C++ 2013 x64 C (CRT) não corretamente verificar se determinadas instruções AVX e FMA3 estão disponíveis antes que as funções de tentam usá-los. Se as instruções não estão disponíveis para uso, chamadas para essas funções causam uma exceção de instrução ilegal (0xc000001d). Funções afetadas incluem o registro, log10 e pow e outros.

Esse problema é mais provável de ocorrer nas seguintes situações:
  • Em uma versão antiga do sistema operacional Windows que não dá suporte a AVX estado salvar (por exemplo, o Windows Vista) se ele é usado em um computador que suporta o conjunto de instruções AVX
  • Se a gravação de estado AVX explicitamente está desabilitada na configuração de inicialização do sistema operacional
  • No ambiente de pré-instalação do Windows (Windows PE)

    Observação: O Windows PE não dá suporte à economia de estado AVX.

Esse problema foi relatado no Microsoft Connect:

Causa
Esse problema ocorre porque o tempo de execução do Visual C++ 2013 x64 C não verifica se o sistema operacional suporta AVX estado salvar antes de tentar executar instruções AVX ou FMA3.
Resolução
Se todos os binários afetados do C++ são criados usando o Visual C++ 2013 usam a DLL de tempo de execução do C (msvcr120.dll), instale a atualização Microsoft Visual C++ 2013 redistribuível – 12.0.40660.0 ou uma versão posterior.

Se os binários afetados do C++ estaticamente vinculam o Visual C++ 2013 C Runtime, você deve atualizar a sua instalação do Visual Studio 2013 instalar o hotfix 3174417 e recriar e reimplantar os binários afetados.

Observação: Esse problema não afeta as versões anteriores do Visual C++ C Runtime (Visual C++ 2012 e versões anteriores). O problema foi corrigido antes do lançamento inicial do CRT Universal que é usado pelo Visual C++ 2015.

Centro de Download da Microsoft

Para atualizar o Visual C++ 2013 C Runtime vinculadas estaticamente, o hotfix 3174417 é lançado como uma atualização somente para download e não é distribuído através do Windows Update. Ela está disponível no site Microsoft Download Center:

Faça o downloadBaixe o pacote agora

Atualizar dinamicamente vinculado Visual C++ 2013 C Runtime DLLs, um atualizado redistribuível está disponível. Para obter mais informações, consulte o seguinte artigo da Base de Conhecimento Microsoft:

Como Contornar
Towork alternativa para esse problema, desative o FMA3 na biblioteca de matemática se você tiver sido afetado por esse problema. Você pode consultar se o sistema suporta instruções AVX chamandoGetEnabledXStateFeatures e desativar AVX no CRT explicitamente chamando _set_FMA3_enable(0).

Para obter mais informações, consulte Trabalhando com contexto de XState no site do MSDN.

A função _set_FMA3_enable(0) foi declarado no <math.h>e está disponível somente quando você construir para x64. (Este bibliotecas de afeta apenas o x64 de problema). Isso faz com que a biblioteca de matemática voltar a usar as implementações não FMA3. </math.h>

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3174417 - Última Revisão: 07/29/2016 05:55:00 - Revisão: 1.0

Visual Studio 2013 Community Edition

  • kbfix kbqfe atdownload kbexpertiseadvanced kbsurveynew kbmt KB3174417 KbMtpt
Comentários