找回密码
 用户注册

QQ登录

只需一步,快速开始

楼主: sgx9988

ACE任务定时器丢失问题求助

[复制链接]
 楼主| 发表于 2013-4-22 16:56:23 | 显示全部楼层
如何使用windb查看锁状态
0:021> !locks
NTSDEXTS: Unable to resolve ntdll!RtlCriticalSectionList
NTSDEXTS: Please check your symbols
目前windb出现以上错误,不知道有没有人知道是什么原因啊

点评

这个需要配置调试符号: 方法如下: 运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量: 在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.co  详情 回复 发表于 2013-4-22 17:28
 楼主| 发表于 2013-4-22 17:28:31 | 显示全部楼层
sgx9988 发表于 2013-4-22 16:56
如何使用windb查看锁状态
0:021> !locks
NTSDEXTS: Unable to resolve ntdll!RtlCriticalSectionList

这个需要配置调试符号:
方法如下:

运行WinDbg->菜单->File->Symbol File Path->按照下面的方法设置_NT_SYMBOL_PATH变量:
在弹出的框中输入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照这样设置,WinDbg将先从本地文件夹C:\MyCodesSymbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载Symbols)。另一种做法是从这个Symbol下载地址中http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx,下载相应操作系统所需要的完整的Symbol安装包,并进行安装,例如我将其安装在D:\WINDOWS\Symbols,在该框中输入“D:\WINDOWS\Symbols”。(这里要注意下载的Symbols的版本一定要正确,在我的Win2003+Sp1上,我曾经以为安装Win2003+Sp2的Symbols可能会牛×点,但结果证明我错了,用WinDbg打开可执行文件时,提示“PDB symbol for mscorwks.dll not loaded;Defaulted to export symbols for ntdll.dll”的错误,我有重新装上Win2003+Sp1的Symbols, 现在一切运行正常^_^)
发表于 2013-4-25 14:20:48 | 显示全部楼层
WaitForSingleObject -> 八九不离十,死锁了。查代码环吧!
发表于 2013-4-25 14:21:37 | 显示全部楼层
具体处理呢,就是在代码中寻找“环”,寻找环路的处理依赖。比如A通过B调用了C,而C在不同的线程,又调用了A,A、B、C中的代码,都有同步处理过程,这个就容易发生死锁,想办法打破这种循环依赖关系,不仅仅对减少代码耦合重要,更对服务器的死锁预防重要。
http://www.acejoy.com/forum.php?mod=viewthread&tid=722

点评

已经解决了,是由于一个任务的消息队列满了,导致消息转发任务阻塞,最终导致所有任务阻塞。  详情 回复 发表于 2013-4-28 08:57
 楼主| 发表于 2013-4-28 08:57:48 | 显示全部楼层
winston 发表于 2013-4-25 14:21
具体处理呢,就是在代码中寻找“环”,寻找环路的处理依赖。比如A通过B调用了C,而C在不同的线程,又调用了 ...

已经解决了,是由于一个任务的消息队列满了,导致消息转发任务阻塞,最终导致所有任务阻塞。
发表于 2013-7-24 15:19:33 | 显示全部楼层
线程不多应该直接可以看那些正在等待的线程,看是否相互发生了死等,还有在ACE的Mutex中在调试版本下他记录了当前拥有它的线程ID,这样也可以快速看看是否发生死锁。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 16:14 , Processed in 0.077497 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表