Introduction
Cet article décrit un problème dans lequel uneexception n se produit lorsque plusieurs threads appellent la fonction d’exécution « atexit » C en même temps dans Windows Embedded Compact 7. Une mise à jour est disponible pour résoudre ce problème. Avant d’installer cette mise à jour, toutes les mises à jour précédemment publiées pour ce produit doivent être installés.
Symptômes
Lorsque plusieurs threads appellent la fonction d’exécution atexit C en même temps dans Windows Embedded Compact 7, une exception peut se produire. L’exception se produit lorsque le code qui appelle la fonction atexit n’est pas sérialisé ou lorsque la fonction atexit est insérée par le compilateur.
Cause
Le problème se produit car la fonction atexit C-exécuter l’heure n’est pas thread-safe. Par conséquent, la table de la mémoire par la fonction est endommagée.
Résolution
Informations de mise à jour de logiciel
Une mise à jour logicielle prise en charge est désormais disponible auprès de Microsoft en tant que la mise à jour mensuelle de Windows Embedded Compact 7 datée de (juin 2017).
Remarque Ce Windows Embedded Compact 7 mise à jour mensuelle est disponible au téléchargement depuis le site Web de Microsoft Download Center suivant :
Conditions préalables
Cette mise à jour est pris en charge que si toutes les mises à jour précédemment publiées pour ce produit ont également été installées.
Nécessite un redémarrage
Après avoir appliqué cette mise à jour, vous devez effectuer une génération complète de l’intégralité de la plateforme. Pour ce faire, utilisez une des méthodes suivantes :
-
Dans le menu Générer , cliquez sur Nettoyer la Solution, puis cliquez sur Générer la Solution.
-
Dans le menu Générer , cliquez sur Régénérer la Solution.
Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué cette mise à jour de logiciel.
Mettre à jour les informations sur le remplacement
Cette mise à jour ne remplace pas d'autres mises à jour.
Informations sur les fichiers
Comme il s’agit d’une version complète d’onde. Presque tous les fichiers binaires sont affectés par cette version.
Les fichiers de code source suivants sont affectés par cette version ::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.c
Plus d'informations
Dans un environnement multithread, les tables de fonctions de atexit peuvent être endommagés par un autre appel atexit en raison de la sécurité des threads non. Cela peut entraîner des exceptions et la corruption de la mémoire. La fonction atexit est utilisée pour enregistrer une routine qui sera exécutée lorsque le programme se ferme ou de décharge d’un fichier .dll. La faille dans la sécurité des threads peut entraîner la modification de cette routine de sortie et l’altération des tables fonction exit.
Références
Apprenez-en plus sur la terminologie que Microsoft utilise pour décrire les mises à jour logicielles.