CORREÇÃO: Um comportamento inesperado quando você executa um aplicativo gerado do Visual Studio 2008 Service Pack 1 que chama a função setjmp ou o longjmp em um arquivo de origem

Sintomas

Considere o seguinte cenário:

  • Habilitar a opção de otimização global (/Og), permitindo que uma das opções a seguir:

    • /O1

    • /O2

    • /Ox

  • Criar um arquivo de origem do Microsoft Visual C++ usando o Microsoft Visual Studio 2008 Service Pack 1 (SP1).

  • O arquivo de origem chama a função setjmp , a função longjmp ou as duas funções.

Nesse cenário, o compilador pode usar o mesmo deslocamento de pilha para armazenar variáveis locais diferentes. Portanto, um comportamento inesperado pode ocorrer quando você executar o aplicativo gerado.

Causa

Esse problema ocorre porque o otimizador não conta a função de setjmp ou o longjmp . Isso faz com que o optimizer calcular incorretamente o tempo de vida de variáveis locais. Quando uma variável é alterada, outra variável pode ser alterado inesperadamente.

Resolução

Informações sobre o hotfix

Um hotfix compatível foi disponibilizado pela Microsoft. No entanto, esse hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique este hotfix somente nos sistemas que estiverem enfrentando o problema descrito neste artigo. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde a próxima atualização de software que contenha esse hotfix. Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e suporte ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:

http://support.microsoft.com/contactus/?ws=supportObservação Em alguns casos, as taxas cobradas pelas ligações para o suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão. Para baixar esse hotfix da Galeria de código do Microsoft Developer Network (MSDN), visite o seguinte site da Microsoft:

http://code.msdn.microsoft.com/KB2498381Observação O MSDN Code Gallery exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma listado, é porque a página de recursos da Galeria de código não está disponível para esse idioma. Ou, você pode baixar esse hotfix do seguinte site do Microsoft Connect:

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826

Pré-requisitos

Para aplicar esse hotfix, você deve ter o Microsoft Visual Studio 2008 Service Pack 1 instalado.

Informações de reinicialização

Você não precisa reiniciar o computador após instalar esse hotfix se você interrompeu a todas as instâncias do Visual Studio.

Informações sobre a substituição de hotfixes

Esse hotfix não substitui nenhum hotfix lançado anteriormente.

Informações sobre o arquivo

A versão global deste hotfix instala arquivos que têm os atributos listados nas tabelas a seguir. As datas e as horas desses arquivos estão listadas em formato UTC (Tempo Universal Coordenado). As datas e as horas desses arquivos no seu computador local são exibidas na hora local, com o ajuste do horário de verão atual. Além disso, as datas e as horas poderão ser alteradas quando você realizar algumas operações nos arquivos.

Nome do arquivo

Versão do arquivo

Tamanho do arquivo

Data

Hora

Plataforma

C2.dll

15.0.30729.6147

2,283,840

25 de fevereiro de 2011

01:25

x86

C2.dll

15.0.30729.6147

2,362,688

25 de fevereiro de 2011

01:25

x86

C2.dll

15.0.30729.6147

2,493,248

25 de fevereiro de 2011

01:25

x86

C2.dll

15.0.30729.6147

3,018,048

25 de fevereiro de 2011

01:25

x64

C2.dll

15.0.30729.6147

7,263,040

25-Feb-2011

01:25

IA-64

Link.exe

9.0.30729.6147

1,055,560

25 de fevereiro de 2011

01:25

x64

Link.exe

9.0.30729.6147

2,135,368

25-Feb-2011

01:25

IA-64

Link.exe

9.0.30729.6147

800,584

25-Feb-2011

01:25

x86

Solução alternativa

Para contornar esse problema, inicialize as variáveis locais no início da função para que o compilador possa estar ciente do tempo de vida as variáveis.

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Informações adicionais

Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×