Периодическое нарушение доступа через __crtFlsGetValue - PullRequest
1 голос
/ 14 июля 2020

Я периодически сталкиваюсь с нарушением прав доступа в функции __crtFlsGetValue(), когда она вызывает (*pfFlsGetValue)(dwFlsIndex). Функции являются частью windows предоставленного файла с исходным кодом winapisupp. c. Нарушение прав доступа происходит после успешного запуска приложения в течение почти 24 часов.

  1. Я сгенерировал свой набор c библиотек stati c с VS2013 в Windows 10 ОС. Позже приложение было построено с использованием этих c библиотек. Библиотека CRT статически связана с этим приложением. Приложение также построено с VS2013 на машине windows 10.

  2. Приложение продолжает вызывать sprintf стандартный вызов в непрерывном режиме l oop после интервала в 1 минуту. sprintf внутренне вызывает windows предоставленную функцию __crtFlsGetValue().

  3. При успешной обработке, (*pfFlsGetValue) указатель функции внутри __crtFlsGetValue() успешно указывает на kernel32.dll!FlsGetValueStub. Но периодически через 24 часа (*pfFlsGetValue) получает указатель на какой-то другой произвольный адрес, что вызывает нарушение прав доступа. Ниже приведена трассировка стека, полученная для того же: - введите описание изображения здесь

  4. Основной поток приложения порождает еще два потока. sprintf вызывается в одном из созданных потоков.

Пожалуйста, помогите мне найти причину root проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...