Introdução
Este artigo descreve um problema no qual umn excepção ocorre quando vários threads chamar a função de tempo de execução "atexit" C em simultâneo no Windows Embedded Compact 7. Existe uma actualização resolver este problema. Antes de instalar esta actualização, tem de ser instaladas todas as actualizações anteriormente disponibilizadas para este produto.
Sintomas
Quando vários threads de chamar a função de tempo de execução atexit C ao mesmo tempo no Windows Embedded Compact 7, poderá ocorrer uma excepção. A excepção ocorre quando o código que chama a função atexit não é serializado ou quando a função atexit é inserida pelo compilador.
Causa
Este problema ocorre porque a função de atexit de tempo de execução C não é seguro para thread. Por conseguinte, a tabela de memória que utiliza a função está danificada.
Resolução
Informações de actualização de software
Uma actualização de software suportado está agora disponível na Microsoft nome actualização mensal do Windows Embedded Compact 7 (Junho de 2017).
Nota Este Embedded Compact 7 actualização mensal do Windows está disponível para transferência a partir do seguinte Web site da Microsoft Download Center:
Pré-requisitos
Esta actualização só é suportada se todas as actualizações anteriormente disponibilizadas para este produto também tiverem sido instaladas.
Requisito de reinício
Depois de aplicar esta actualização, deve efectuar uma limpeza de toda a plataforma. Para tal, utilize um dos seguintes métodos:
-
No menu de criação , clique Solução limpoe, em seguida, clique em Criar solução.
-
No menu de criação , clique em Reconstruir solução.
Não é necessário reiniciar o computador depois de aplicar esta actualização de software.
Atualizar informações de substituição
Esta actualização não substitui quaisquer outras actualizações.
Informações de ficheiro
Como esta é uma versão de onda completa. Quase todos os binários são afectados por esta edição.
Os seguintes ficheiros de origem são afectados por esta versão::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cMais informações
Num ambiente com vários threads, tabelas de função do atexit podem estar danificadas por outra chamada de atexit devido a segurança de thread não. Isto poderia conduzir à corrupção da memória e excepções. A função atexit está a ser utilizada para registar uma rotina que será executada quando o programa termina ou descarrega automaticamente uma. dll. A falha na segurança de thread poderia conduzir a alteração a esta rotina de saída e a corrupção das tabelas de função de saída.
Referências
Obter informações sobre a terminologia utilizada pela Microsoft para descrever actualizações de software.