Inleiding
Dit artikel beschrijft een probleem waarbij eenn uitzondering doet zich voor wanneer de C runtime-"atexit"-functie in Windows Embedded Compact 7 tegelijkertijd meerdere threads. Er is een update beschikbaar om dit probleem te verhelpen. Voordat u deze update installeert, moeten alle eerder uitgebrachte updates voor dit product zijn geïnstalleerd.
Symptomen
Als meerdere threads de C runtime- atexit -functie in Windows Embedded Compact 7 tegelijkertijd, treedt er een uitzondering. De uitzondering doet zich voor wanneer de code die de functie atexit aanroept geen serienummer of wanneer de atexit functie wordt ingevoegd door de compiler.
Oorzaak
Het probleem treedt op omdat de functie C Run time atexit niet thread-safe. Daarom is de geheugen-tabel waarin de functie beschadigd.
Oplossing
Informatie over de software-update
Een ondersteunde software-update is nu beschikbaar bij Microsoft als Compact 7 maandelijkse Update van Windows Embedded (juni 2017).
Opmerking Deze Windows ingesloten Compact 7 maandelijkse Update is beschikbaar voor downloaden vanaf de volgende website van Microsoft Download Center:
Vereisten
Met deze update wordt alleen ondersteund als ook alle eerder uitgebrachte updates voor dit product zijn geïnstalleerd.
Opnieuw opstarten
Nadat u deze update hebt toegepast, moet u het hele platform leegmaken en opnieuw opbouwen uitvoeren. Gebruik hiervoor een van de volgende methoden:
-
Klik op Schone oplossingin het menu maken en klik op Oplossing bouwen.
-
Klik op het menu BuildOplossing bouwen.
U beschikt niet over de computer opnieuw opstarten nadat u deze update hebt toegepast.
Informatie over het vervangen van updates
Deze update vervangt geen andere updates.
Bestandsinformatie
Als dit een volledige wave-release is. Bijna alle binaire bestanden worden beïnvloed door deze versie.
De volgende bronbestanden worden beïnvloed door deze versie::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cMeer informatie
In een multithreaded omgeving is tabellen van de functie van de atexit beschadigd door een aanroep van atexit door niet-thread veiligheid. Dit kan leiden tot beschadiging van het geheugen en uitzonderingen. De functie atexit wordt gebruikt voor het registreren van een routine die wordt uitgevoerd wanneer het programma wordt afgesloten of een DLL-bestand wordt verwijderd. De fout in de thread veiligheid kan leiden tot wijziging van deze afsluitroutine en beschadiging van de exit function-tabellen.
Referenties
Meer informatie over de terminologie die door Microsoft wordt gebruikt om software-updates te beschrijven.