Странное количество дескрипторов в WaitForMultipleObjectsEx - PullRequest
0 голосов
/ 02 декабря 2011

Просматривая вывод kb, этот поток ожидает какого-то события. Теперь первый аргумент для этого метода - это число дескрипторов, которые он ожидает, но, как вы можете видеть, в выходных данных он имеет значение 0024e154. Я обычно вижу число как 2, 3, 4 и т. Д. Есть идеи, что это значит?

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

Ответы [ 2 ]

0 голосов
/ 04 декабря 2011

+ 0x11d смещено от WaitForMultipleObjectsEx.Windbg берет ближайший символ, и когда вы видите такое большое смещение, это обычно означает, что у вас нет хороших символов.Кадр стека, вероятно, вообще не находится в WaitForMultipleObjectsEx , поэтому параметры кажутся бессмысленными.Сделайте

 .symfix
 .reload

, прежде чем снова посмотреть на свой стек.Если вы видите:

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

, вы не можете доверять выводу.

0 голосов
/ 02 декабря 2011

Стек вызовов не выглядит надежным.Пара вопросов:

  • Были загружены правильные символы?
  • Если загружены правильные символы, лучший способ - посмотреть трассировку необработанного стека.Вы можете сделать это, определив, где стек начинается и заканчивается.Это можно определить с помощью

    ! Teb

    Найдите выходные данные ExceptionBase и ExceptionLimit, а затем выгрузите необработанный стек с помощью

    dps begin end

    и проанализируйтестек

...