Я периодически сталкиваюсь с нарушением прав доступа в функции __crtFlsGetValue()
, когда она вызывает (*pfFlsGetValue)(dwFlsIndex)
. Функции являются частью windows предоставленного файла с исходным кодом winapisupp. c. Нарушение прав доступа происходит после успешного запуска приложения в течение почти 24 часов.
Я сгенерировал свой набор c библиотек stati c с VS2013 в Windows 10 ОС. Позже приложение было построено с использованием этих c библиотек. Библиотека CRT статически связана с этим приложением. Приложение также построено с VS2013 на машине windows 10.
Приложение продолжает вызывать sprintf
стандартный вызов в непрерывном режиме l oop после интервала в 1 минуту. sprintf
внутренне вызывает windows предоставленную функцию __crtFlsGetValue()
.
При успешной обработке, (*pfFlsGetValue)
указатель функции внутри __crtFlsGetValue()
успешно указывает на kernel32.dll!FlsGetValueStub
. Но периодически через 24 часа (*pfFlsGetValue)
получает указатель на какой-то другой произвольный адрес, что вызывает нарушение прав доступа. Ниже приведена трассировка стека, полученная для того же: - введите описание изображения здесь
Основной поток приложения порождает еще два потока. sprintf
вызывается в одном из созданных потоков.
Пожалуйста, помогите мне найти причину root проблемы.