Introduktion
Den här artikeln beskrivs ett problem där enn-undantag uppstår när flera trådar anropa funktionen C körning ”atexit” på samma gång i Windows Embedded kompakt 7. Det finns en uppdatering som löser problemet. Alla tidigare utgivna uppdateringar för den här produkten måste installeras innan du installerar denna uppdatering.
Symptom
När flera trådar anropa funktionen C Runtime- atexit i Windows Embedded kompakt 7 samtidigt, kan det uppstå ett undantag. Undantaget när kod som anropar funktionen atexit inte serialiserad eller funktionen atexit infogas av kompilatorn.
Orsak
Problemet beror på att funktionen atexit C-kör tid inte är trådsäkert. Tabellen minnet använder funktionen skadas.
Lösning
Information om programvara
En programuppdatering som stöds är nu tillgänglig från Microsoft som Windows Embedded kompakt 7 Monthly Update (juni 2017).
Obs! Windows Embedded kompakt 7 månatliga uppdateringen kan hämtas från följande Microsoft Download Center-webbplats:
Förutsättningar
Den här uppdateringen stöds endast om alla tidigare utgivna uppdateringar för produkten har installerats.
Krav på omstart
När du har installerat den här uppdateringen måste du utföra en ren build-version av hela plattformen. Genom att använda någon av följande metoder:
-
Klicka på Ren lösningpå Build -menyn och sedan på Build Solution.
-
Klicka på Återskapa lösningpå Build -menyn.
Du behöver inte starta om datorn när du har installerat denna uppdatering.
Information om vad uppdateringen ersätter
Den här uppdateringen ersätter inte några andra uppdateringar.
Filinformation
Eftersom detta är en fullständig wave-version. Nästan alla binärfiler som påverkas av den här versionen.
Följande källfiler som påverkas av den här utgåvan::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cMer information
I en flertrådsmiljö skadas funktionen tabeller av atexit av ett annat anrop av atexit på grund av icke-tråd säkerhet. Detta kan leda till minne korruption och undantag. Funktionen atexit används för att registrera en rutin som körs när programmet avslutas eller inaktiverar en DLL-fil. Fel i tråd säkerhet kan leda till ändring av detta avsluta rutinen och avsluta funktionen tabeller är skadad.
Referenser
Lär dig mer om den terminologi som Microsoft använder för att beskriva programuppdateringar.