应用程序在Windows 10上的boost :: filesystem :: exist和CoInitializeSecurity调用上启动

时间:2019-06-08 06:23:43

标签: c++ windows boost

我们有一个产品,其中Windows服务会启动一个代理(watchDog),而该代理会启动另一个代理(实际产品)。该产品已在Windows 7、8和10上成功进行了测试。但是,在只有Windows 10的客户端位置上会产生一个奇怪的问题。当它调用boost::filesystem::existsCoInitializeSecurity时,该调用不会完成,不会引发任何异常,但会自行启动。第一个实例的父ID是正确的watchDog代理。但是,当出现问题时,我们会看到实际代理的两个条目,第一个条目的父ID为watchDogAgent,但是第二个条目的父ID为第一个条目的进程ID。

这并非每次都发生,而是随机发生,但发生在同一位置。如果我注释掉代码,则代理可以完美运行。如果我评论问题代码中的任何一个,问题将在第二位发生。

请检查此图像,其中在发生问题时发出wmic命令的输出,在第一个实例发生8秒后发生问题:

image

第二个实例不执行任何操作,甚至不执行main的第一行。我可以从taskmanager中杀死第一个实例,因为它是那里列出的唯一实例。当我第一次使用'taskkill'命令杀死第二个实例时,它成功了,但是它的输入仍然保留在wmic输出中。当我尝试再次杀死它时,出现“拒绝访问”错误。 2至5分钟后,该条目会自动从Wmic输出中删除。

编辑2: 后来,我们确定是导致问题的原因是堆损坏。但是问题仍然存在,为什么它导致exe重新启动。这是processExplorer

的输出

0 个答案:

没有答案