CORREÇÃO: Exceção quando vários segmentos chamam a função do C run-time "atexit" ao mesmo tempo no Windows Embedded Compact 7

Introdução

Este artigo descreve um problema no qual umaexceção n ocorrer quando vários segmentos chamam a função de tempo de execução "atexit" C ao mesmo tempo no Windows Embedded Compact 7. Uma atualização está disponível para resolver esse problema. Antes de instalar essa atualização, todas as atualizações emitidas anteriormente para este produto devem ser instaladas.

Sintomas

Quando vários segmentos chamam a função de tempo de execução atexit C ao mesmo tempo no Windows Embedded Compact 7, pode ocorrer uma exceção. A exceção ocorre quando o código que chama a função atexit não é serializado ou quando a função atexit será inserida pelo compilador.

Causa

O problema ocorre porque a função de atexit de tempo de execução C não é thread-safe. Portanto, a tabela de memória que usa a função está corrompida.

Resolução

Informações de atualização de software

Uma atualização de software compatível está agora disponível na Microsoft como atualização Windows Embedded Compact 7 mensal (junho de 2017).

Observação: Este Windows Embedded Compact 7 atualização mensal está disponível para download no seguinte site da Microsoft Download Center:

Windows Embedded Compact 7 atualizações

Pré-requisitos:

Esta atualização é compatível somente se todas as atualizações emitidas anteriormente para esse produto também foram instaladas.

Requisitos de reinicialização:

Depois de aplicar essa atualização, você deve executar uma compilação limpa de toda a plataforma. Para fazer isso, use um dos seguintes métodos:

  • No menu Build , clique em Limpar soluçãoe, em seguida, clique em Build Solution.

  • No menu Build, clique em Solução de reconstrução.

Você não precisa reiniciar o computador após aplicar essa atualização de software.

Informações de substituição da atualização

Esta atualização não substitui outras atualizações.

Informações sobre o arquivo:

Como esta é uma versão de onda completa. Quase todos os binários são afetados por esta versão.

Os seguintes arquivos de origem são afetados por esta versão::

private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.c

Mais informações

Em um ambiente com vários threads, tabelas de função de atexit podem estar corrompidas por outra chamada atexit devido a segurança do thread não. Isso pode levar à corrupção de memória e de exceções. A função atexit está sendo usada para registrar uma rotina que será executada quando o programa é encerrado ou descarrega um arquivo. dll. A falha na segurança de segmentos pode causar corrupção das tabelas de função exit e alteração desta rotina de saída.

Referências

Saiba mais sobre a terminologia usada pela Microsoft para descrever as atualizações de software.

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!

×