加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

从用户空间冻结窗口的方法

发布时间:2020-12-14 02:53:46 所属栏目:Windows 来源:网络整理
导读:我正在调查导致窗口冻结的错误.发生错误后,当前正在运行的所有进程将继续运行,但如果您尝试使用它们,它们最终会冻结. 例如,我有一个任务管理器,并在冻结时打开几个cmd.任务管理器工作得很好,显示处理器/内存使用情况,所有进程的列表等.但如果我试图杀死一个
我正在调查导致窗口冻结的错误.发生错误后,当前正在运行的所有进程将继续运行,但如果您尝试使用它们,它们最终会冻结.

例如,我有一个任务管理器,并在冻结时打开几个cmd.任务管理器工作得很好,显示处理器/内存使用情况,所有进程的列表等.但如果我试图杀死一个进程,它会冻结.如果我试图打开文件 – >新任务会冻结.在cmd中,如果我尝试打开W??indows应用程序,该命令将执行,新进程将出现在任务管理器中,但应用程序将无法启动.即使启动命令行应用程序也会冻结.

所讨论的软件是一组12个各种服务应用程序,它们使用WCF相互通信.大多数是用C#编写的,有一些Fortran,C.所有这些都在运行用户空间,我们在内核空间中没有任何执行.

所以我的问题是有没有人看过这个或类似的行为?原因是什么?理论上,用户空间应用程序不应该冻结整个操作系统吗?有关调试此情况的任何提示也会有所帮助.感谢您的时间.

更新1:

我们尝试编写一个小应用程序,它不断地从磁盘写入/读取(随机搜索和打开/关闭文件)并在系统冻结之前启动.应用程序在冻结后继续成功写入/读取打开和关闭文件.内存使用情况与正常使用情况相同,在4到5 GB之间,系统有6GB.

我们还做了内存转储,麻烦的是我们没弄清楚发生了什么.转储当然表明Windows已经冻结在键盘驱动程序中,但除此之外,我们无法想象太多.如果我们可以进行用户空间内存转储会更有用.好吧这句话让我对谷歌有点了,看来有一个完整的内存转储选项,会对此进行更多研究并更新进度.

我们目前的嫌疑人是NOD32防火墙,当它关闭时,一切似乎都正常.我们仍然需要确认这一点,并找出我们的代码中的哪些因素引发了这种行为.

谢谢大家的帮助.

更新2:

好的,我设法创建了完整的内存转储.这并不像我希望的那么容易,这里有一些有用的资源,也许有一天他们会帮助别人..:

http://www.osronline.com/article.cfm?article=545

http://blogs.msdn.com/b/ntdebugging/archive/2010/04/02/how-to-use-the-dedicateddumpfile-registry-value-to-overcome-space-limitations-on-the-system-drive-when-capturing-a-system-memory-dump.aspx

一旦系统冻结,我启动了一个cmd.exe并启动了复制命令,cmd冻结了,这是它的堆栈跟踪:

fffff880`087571d0 fffff800`02cc2992 nt!KiSwapContext+0x7a
    fffff880`08757310 fffff800`02cc4d0f nt!KiCommitThreadWait+0x1d2
    fffff880`087573a0 fffff800`02cd9d1f nt!KeWaitForSingleObject+0x19f
    fffff880`08757440 fffff800`02fc06d6 nt!AlpcpSignalAndWait+0x8f
    fffff880`087574f0 fffff800`02fbe660 nt!AlpcpReceiveSynchronousReply+0x46
    fffff880`08757550 fffff800`02fcd13d nt!AlpcpProcessSynchronousRequest+0x33d
    fffff880`08757670 fffff800`030ade59 nt!LpcpRequestWaitReplyPort+0x9c
    fffff880`087576d0 fffff880`05ad1344 nt!LpcRequestWaitReplyPort+0x19
    fffff880`08757710 fffff880`05ad430f eamon+0x5344
    fffff880`087578d0 fffff880`05ad25bb eamon+0x830f
    fffff880`08757970 fffff800`02fd075f eamon+0x65bb
    fffff880`087579f0 fffff800`02fb6624 nt!IopCloseFile+0x11f
    fffff880`08757a80 fffff800`02fd0251 nt!ObpDecrementHandleCount+0xb4
    fffff880`08757b00 fffff800`02fd0164 nt!ObpCloseHandleTableEntry+0xb1
    fffff880`08757b90 fffff800`02cba953 nt!ObpCloseHandle+0x94
    fffff880`08757be0 00000000`77bff7aa nt!KiSystemServiceCopyEnd+0x13 (TrapFrame @ fffff880`08757be0)
    00000000`002fd848 00000000`00000000 ntdll!ZwClose+0xa

更新3:

经过一些广泛的测试后,我们得出结论,该问题与ESET NOD32 Antivirus有关.谢谢大家的帮助和提供的信息.

解决方法

从堆栈转储中,“eamon.sys”驱动程序似乎正处于战斗中.就像你说的,这个驱动程序与ESET的NOD32 Antivirus有关.

如果你加上这个事实你说没有它就一切正常,那么你应该停止你的研究.根据定义,防病毒软件包作为驱动程序安装,因此他们可以高效地完成工作.这样做的缺点是当他们遇到问题时,这意味着他们可以轻松地完全占用机器或导致BSOD.

谷歌搜索了一下,还有一些关于这个特定软件的类似报道(http://www.wilderssecurity.com/archive/index.php/t-259245.html).

您应该联系供应商,看看它是否正常,或者他们是否有更新或解决方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读