IE зависает, используя 100% процессора - PullRequest
3 голосов
/ 22 февраля 2009

У меня есть веб-приложение, которое в процессе нормального взаимодействия вешает IE. Под «зависанием IE» я подразумеваю, что IE больше не отвечает и использует 100% процессорного времени. Единственный выход из этого состояния - убить процесс IE. О приложении:

  • Загружает только одну страницу в браузере, связывается с сервером с помощью запросов Ajax и обновляет DOM.
  • Я могу воспроизвести это с IE6 и IE7, но не с Firefox или Safari.

Мне интересно, видел ли кто-нибудь это уже, и есть ли несколько известных случаев, в которых IE может зависнуть / использовать 100% состояния процессора.

Ответы [ 3 ]

6 голосов
/ 22 февраля 2009

Использовать WinDbg, http://www.microsoft.com/whdc/devtools/debugging/

Присоедините его к процессу IE, в котором возникла проблема.

Команда .symfix + установит путь к вашему символу, чтобы он указывал на сервер символов Microsoft и локально кэшировал символы отладки.

Команда! Runaway перечислит все стеки в этом процессе и скажет вам, какой из них приходит в бешенство.

Если вам повезет, вы можете увидеть что-то узнаваемое, например, замену регулярного выражения в верхней части стека. Или, возможно, механизм верстки зашел в бесконечный цикл. И то, и другое произошло со мной в прошлом.

Если стек вызовов не имеет смысла, используйте «g» для запуска процесса, подождите несколько секунд, нажмите Ctrl + Break, а затем попробуйте снова! Runaway.

Как только вы получили символы локально, вы также можете использовать Process Explorer в SysInternals для просмотра стеков процесса. Настройте параметр «Символы» в Process Explorer так, чтобы он указывал на локальный кэш символов, например «c: \ Program Files \ Средства отладки для Windows \ sym».

1 голос
/ 22 февраля 2009

Попробуйте подключить скрипт-отладчик (через Visual Studio, в моем случае) и посмотрите, что его вызывает.

Скорее всего, это javascript, выполняющий бесконечный цикл, или просто слишком быстрый цикл для того, что нужно сделать для запроса ajax.

0 голосов
/ 22 февраля 2009

Вы пытались отследить проблему? Если проблема также возникает в IE8, вы можете использовать команды console.log и их потрясающий новый встроенный инструмент отладчика / разработчика. В противном случае используйте старую панель инструментов dev для IE или оповещений. Попытайтесь уменьшить проблему, а затем отправьте сообщение об ошибке (и вставьте код, пожалуйста, сюда).

...