程序启动但在Windows 7上不执行任何操作


2

我们的一位用户正试图在他的Windows 7 64位机器上运行我们的(开源)软件

不幸的是,GUI版本和程序的命令行版本都没有在他的机器上运行。程序似乎开始但没有做任何事情,GUI版本甚至没有打开窗口。

我不认为这个过程实际上走得很远。以下是他和我的机器上进程'线程的Process Explorer视图:

在他的Windows 7机器上:

处理Windows 7上的线程

在我的Windows 10机器上:

处理Windows 10上的线程

我们的软件是使用64位模式的Visual Studio 2013构建的。包含MSVC运行时。它已经工作多年,可能在各种机器上。

可能发生什么事?

我很乐意添加所需的详细信息。

更新1:我有两台机器的Process Monitor跟踪(* .pml文件),但虽然我知道如何解释它们,但我不确定从中可以得出什么结论。有兴趣看看吗?因为我怀疑它们可能包含敏感信息,所以我在这里发布它们有点犹豫。

更新2:该问题在我们有权访问的所有Windows 7计算机上都可以重现,但在其他任何Windows版本上都没有。

更新3:据报道,该应用程序的先前版本在Windows 7上运行正常,而最新版本则没有。我们构建或打包应用程序的方式没有任何改变。


@Thomas我从用户那里得到了一个Process Monitor跟踪。在此发布是否安全,或者它是否可能包含敏感信息?
FrançoisBeaune2016年

取决于过滤器。它可能会暴露路径,IP地址甚至用户名。我不会在这里发布一个完整的捕获
托马斯韦勒2016年

如果右键单击包含SUCCESS的行上的Result列,请从上下文菜单中选择“Exclude”。这应该只会产生一系列潜在问题。
Thomas Weller 2016年

debugging.wellisolutions.de/procmonanalyzer可能会检测到一个丢失的DLL问题(虽然通常程序会崩溃而你的程序似乎继续运行。
Thomas Weller 2016年

谢谢@Thomas。这几乎肯定不是一个缺失的DLL问题,因为Windows通常会抱怨它(缺少组件等),无论如何我们已经在野外部署这个软件多年没有问题。我投票支持某种防病毒问题。如果你愿意看看,我可以为你提供跟踪。
FrançoisBeaune2016年

Answers:


1

当我在Microsoft WinDbg调试器中运行它时,这是一些输出:

Break-in sent, waiting 30 seconds...
WARNING: Break-in timed out, suspending.
         This is usually caused by another thread holding the loader lock
(36a4.2fc8): Wake debugger - code 80000007 (first chance)

请参阅StackOverflow加载程序锁是什么

这在程序的启动过程中很早就会发生。

在我看到的callstack上

0:000> k
 # Child-SP          RetAddr           Call Site
00 00000000`0020e9f8 00000000`771eaa78 ntdll!ZwWaitForKeyedEvent+0xa
01 00000000`0020ea00 00000000`771eabe2 ntdll!TppWaitpSet+0x1f1
02 00000000`0020eaa0 00000000`771ed0c4 ntdll!TppSetWaitInterrupt+0xa2
03 00000000`0020eb90 00000000`770bee49 ntdll!RtlRegisterWait+0x1e4
04 00000000`0020ec60 000007fe`d7252e98 kernel32!RegisterWaitForSingleObject+0x59
[...]
MSVCR120!Concurrency::critical_section::lock+0x2a [f:\dd\vctools\crt\crtw32\concrt\rtlocks.cpp @ 1031]
[...]
17 00000000`0020f790 00000000`00000000 ntdll!LdrInitializeThunk+0xe

所以这可能是(但不一定是)死锁:线程之前锁定了一个关键部分,现在正在等待其他事情。在x64上很难说,因为获取参数并不容易。否则我们可以遍历等待链。


难怪为什么你会看到“不再支持升级”。当我指责“诽谤”错误时。就像,哦,所以你是他的俱乐部的新手,并决定改变编译,现在世界根据你的描述被剥夺了?!
ejbytes 2016年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.