Wprowadzenie
W tym artykule opisano problem, któryn wyjątek występuje, gdy wiele wątków wywołania funkcji wykonywania "atexit" C w tym samym czasie w systemu Windows Embedded Compact 7. Ten problem można rozwiązać przez zainstalowanie tej aktualizacji. Przed zainstalowaniem tej aktualizacji należy wszystkie uprzednio wydane aktualizacje dla tego produktu musi być zainstalowany.
Objawy
Gdy wiele wątków wywołanie funkcji wykonywania atexit C w tym samym czasie w systemu Windows Embedded Compact 7, może wystąpić wyjątek. Wyjątek występuje, gdy kod, który wywołuje funkcję atexit nie jest seryjny lub funkcji atexit jest wstawiany przez kompilator.
Przyczyna
Ten problem występuje, ponieważ funkcja atexit czasu wykonywania C nie jest wątków. W związku z tym tabela pamięci, która używa funkcji jest uszkodzony.
Rozwiązanie
Informacje dotyczące aktualizacji oprogramowania
Obsługiwana aktualizacja oprogramowania jest teraz udostępniana przez firmę Microsoft jako aktualizację systemu Windows Embedded Compact 7 miesięczne (czerwca 2017).
Uwaga Ta aktualizacja systemu Windows Embedded Compact 7 miesięczne jest dostępny do pobrania z następującej witryny Microsoft Download Center:
Wymagania wstępne
Ta aktualizacja jest obsługiwana tylko wtedy, gdy wszystkie uprzednio wydane aktualizacje dla tego produktu zostały również zainstalowane.
Wymagania dotyczące ponownego uruchomienia
Po zastosowaniu tej aktualizacji należy wykonać czystą kompilację całej platformy. Aby to zrobić, użyj jednej z następujących metod:
-
W menu Tworzenie kliknij Czystego roztworu, a następnie kliknij Budowania rozwiązania.
-
W menu Tworzenie kliknij przycisk Odbuduj rozwiązanie.
Nie trzeba ponownie uruchomić komputer po zastosowaniu tej aktualizacji oprogramowania.
Informacje dotyczące zastępowania aktualizacji
Ta aktualizacja nie zastępuje żadnych innych aktualizacji.
Informacje o plikach
Jak jest wersja pełna fala. Prawie wszystkie pliki binarne są zagrożone w tej wersji.
Następujące pliki źródłowe dotyczy tej wersji::
private\winceos\COREOS\core\corelibc\crtw32\startup\cexit.cpp
private\winceos\COREOS\core\corelibc\crtw32\startup\onexit.cWięcej informacji
W środowisku wielowątkowym tabelach funkcji atexit może być uszkodzony przez inne wywołanie atexit ze względu na bezpieczeństwo-wątku. Może to prowadzić do uszkodzenia pamięci i wyjątki. Funkcja atexit jest używany do rejestrowania procedurę, która zostanie wykonana, gdy zamyka program lub zwalnia .dll. Luka w bezpieczeństwo wątków może doprowadzić do zmiany tej procedury wyjścia i uszkodzenie funkcji Zakończ tabel.
Powiązane artykuły
Zobacz więcej informacji na temat terminologii stosowanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.