WaitForMultipleObjectsEx中的句柄数量奇怪

时间:2011-12-02 14:20:46

标签: .net windbg sos

查看kb的输出,此线程正在等待某个事件。现在,此方法的第一个参数是它等待的句柄数,但是在输出中它的值为0024e154。我通常会看到像2,3,4等等的数字。任何想法是什么意思?

ChildEBP RetAddr  Args to Child  
0024e1a0 75c70208 0024e154 0024e1c8 00000000 kernel32!WaitForMultipleObjectsEx+0x11d  

2 个答案:

答案 0 :(得分:0)

调用堆栈看起来不可靠。几个问题:

  • 是否加载了正确的符号?
  • 如果加载了正确的符号,最好的方法是查看原始堆栈跟踪。你可以通过确定堆栈的开始和结束来做到这一点。这可以通过

    确定

    !TEB

    查找ExceptionBase和ExceptionLimit输出,然后使用

    转储原始堆栈

    dps开始结束

    并分析堆栈

答案 1 :(得分:0)

+ 0x11d从WaitForMultipleObjectsEx偏移。 Windbg采用最近的符号,当你看到如此大的偏移量时,通常意味着你没有好的符号。堆栈帧可能根本不在 WaitForMultipleObjectsEx 中,因此参数似乎是无意义的。 做一个

 .symfix
 .reload

再看一下你的筹码。 如果你看到:

WARNING: Frame IP not in any known module. Following frames may be wrong.

你不能相信输出。