Úvod
Tento článek popisuje problém, ve kterémdojde k výjimce n, když více vláken volání funkce C Runtime "atexit" současně v systému Windows Embedded Compact 7. Pro řešení tohoto problému je k dispozici aktualizace. Před instalací této aktualizace musí být všechny předchozí aktualizace vydané pro tento produkt nainstalován.
Příznaky
Při více podprocesů volání funkce C Runtime atexit současně v systému Windows Embedded Compact 7, může dojít k výjimce. Kód, který volá funkci atexit není serializovat nebo atexit funkce je vložen kompilátor dojde k výjimce.
Příčina
K problému dochází, protože funkce atexit čas spuštění C není bezpečné podprocesu. Proto je poškozen paměti tabulku, která používá funkci.
Řešení
Informace o aktualizaci softwaru
Podporovanou aktualizaci softwaru je nyní k dispozici od společnosti Microsoft jako Windows Embedded Compact 7 Monthly Update (červen 2017).
Poznámka: Windows Embedded Compact 7 měsíční aktualizaci lze stáhnout z následujícího webu Microsoft Download Center:
Předpoklady
Tato aktualizace je podporována pouze v případě, že byly nainstalovány i všechny předchozí aktualizace vydané pro tento produkt.
Požadavek na restartování
Po instalaci této aktualizace nutné provést čisté sestavení celé platformy. Chcete-li to provést, použijte jednu z následujících metod:
-
V nabídce sestavení klepněte na tlačítko Vyčistit řešenía pak klepněte na tlačítko Sestavit řešení.
-
V nabídce sestavení klikněte na tlačítko Znovu sestavit řešení.
Nemáte k restartování počítače po instalaci této aktualizace softwaru.
Informace o nahrazení aktualizace
Tato aktualizace nenahrazuje žádné jiné aktualizace.
Informace o souborech
Je to úplná vlna uvolnění. Téměř všechny binární soubory jsou ovlivněny toto vydání.
Následující zdrojové soubory jsou ovlivněny toto vydání::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cDalší informace
V prostředí s více vlákny může být poškozen jiným voláním atexit atexit funkce tabulek z jiných vláken. To může vést k poškození paměti a výjimky. Funkce atexit používá k registraci rutiny, která bude provedena při ukončí program nebo uvolnění knihovny DLL. Chyba v bezpečnostní vlákno mohlo způsobit změnu tohoto ukončení rutiny a poškození tabulky funkce exit.
Odkazy
Další informace o terminologii , kterou společnost Microsoft používá k popisu aktualizací softwaru.