Einführung
Dieser Artikel beschreibt ein Problem, bei dem eineAusnahme tritt auf, wenn mehrere Threads gleichzeitig Windows Embedded Compact 7 C zur Laufzeit "Atexit"-Funktion aufrufen. Ein Update ist verfügbar, um dieses Problem zu beheben. Bevor Sie dieses Update installieren, müssen alle zuvor veröffentlichten Updates für dieses Produkt installiert.
Problembeschreibung
Wenn mehrere Threads gleichzeitig Windows Embedded Compact 7 C Run-Time Atexit -Funktion aufrufen, kann eine Ausnahme auftreten. Die Ausnahme tritt auf, wenn der Atexit -Funktion aufrufende Code nicht serialisiert Atexit -Funktion vom Compiler eingefügt wird.
Ursache
Das Problem tritt auf, da C Run Time Atexit -Funktion nicht threadsicher ist. Daher ist die Speichertabelle, die die Funktion beschädigt.
Problemlösung
Informationen zu Softwareupdates
Ein unterstütztes Softwareupdate ist inzwischen von Microsoft als Windows Embedded Compact 7 monatliches Update (Juni 2017).
Hinweis Dieses Windows Embedded Compact 7 monatliche Update ist auf der folgenden Microsoft Download Center-Website zum Download zur Verfügung:
Voraussetzungen
Dieses Update wird nur unterstützt, wenn alle zuvor veröffentlichten Updates für dieses Produkt ebenfalls installiert wurden.
Neustartanforderung
Nach der Installation dieses Updates müssen Sie die gesamte Plattform neu erstellen. Verwenden Sie hierzu eine der folgenden Methoden:
-
Im Menü Erstellen auf Projektmappe bereinigenund dann auf Projektmappe erstellen.
-
Klicken Sie im Menü Erstellen auf Projektmappe neu erstellen.
Sie müssen keinen Neustart des Computers, nachdem Sie dieses Update anwenden.
Ersetzte Updates
Dieses Update ersetzt keine anderen Updates.
Dateiinformationen
Eine vollständige Wave-Version ist. Fast alle Binärdateien sind dieser Version betroffen.
Die folgenden Quelldateien werden diese Version betroffen::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cWeitere Informationen
In einer Multithreadumgebung sein Tabellen Funktion Atexit durch Atexit rufen nicht Thread-Sicherheit beschädigt. Dies kann zu Speicher und Ausnahmen führen. Atexit -Funktion wird sich eine Routine, die ausgeführt wird, wenn das Programm beendet wird oder eine DLL entladen verwendet. Fehler in Threadsicherheit könnte Änderung dieser Exit-Routine und beschädigte Tabellen Funktion beenden.
Referenzen
Erfahren Sie mehr über die Terminologie, mit der Microsoft Softwareupdates beschrieben werden.