Приложение запускает себя на boost :: filesystem :: exist и вызове CoInitializeSecurity в Windows 10 - PullRequest
1 голос
/ 08 июня 2019

У нас есть продукт, в котором наша служба Windows запускает агента (watchDog), а этот агент запускает другого агента (фактический продукт). Этот продукт успешно протестирован на Windows 7, 8 и 10. Но на клиентских компьютерах с Windows 10 возникает странная проблема. Когда он вызывает boost::filesystem::exists ИЛИ CoInitializeSecurity, вызов не завершается, не выдает никакого исключения, но запускается сам. Родительский идентификатор первого экземпляра правильный, его агент watchDog. Но когда возникает проблема, мы видим две записи фактического агента, родительский идентификатор первой записи равен watchDogAgent, а родительский идентификатор второй записи - это идентификатор процесса первой записи.

Это происходит не каждый раз, случайно, но в одном и том же месте. Если я закомментирую код, агент будет работать безупречно. Если я комментирую какой-либо код проблемы, проблема возникает именно на втором месте.

Пожалуйста, проверьте это изображение, где вывод команды wmic отображается при возникновении проблемы, проблема возникла через 8 секунд после первого экземпляра:

image

Второй экземпляр ничего не выполняет, даже первая строка main. Первый экземпляр, который я могу убить из TaskManager, так как это единственный экземпляр в списке. Когда я убиваю второй экземпляр с помощью команды 'taskkill', первый раз он успешен, но его запись все еще сохраняется в выводе wmic. Когда я пытаюсь убить его снова, я получаю сообщение об ошибке «Отказано в доступе». Через 2–5 минут запись автоматически удаляется с выхода wmic.

Редактировать 2: Позже мы определили, что проблема была в кучной коррупции. Но все еще остается вопрос, почему он снова запускает exe. Вот вывод processExplorer

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