Bezdepbonusu7Программирование: статьи и ответы

Вопрос

IE с использованием mshtmled.dll. Но что такое mshtmled.dll?

Автор вопроса: CommunityОтветов: 1

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

Когда я смотрю на трассировку стека потока, который зависает в iexplore.exe, я вижу, что стек проходит через mshtmled.dll. Я привык видеть mshtml.dll в этих следах стека, но не mshtmled.dll.

Вызываемые методы заставляют вас думать, что на странице есть редактор (например, CSelectionManager::SetEditContext или CSelectionManager::EnsureEditContextClick), но у меня на странице не используется редактор HTML (например, редактор FCK в YUI RTE).

Так что мне действительно интересно: как mshtmled.dll используется IE?

Пытаюсь отключить mshtmled.dll

@VonC предложил в комментариях отключить mshtmled.dll через диалоговое окно "Управление надстройками", которое вы получаете на вкладке "Программы" в настройках обозревателя. После отключения этой dll и перезапуска IE я вижу, что она отключена:

альтернативный текст http://img.skitch.com/20090226-c9e9ygek8i6a7di3jijang2x317k

Однако после этого я все еще могу воспроизвести проблему, и я действительно вижу (ах!) Mshtmled.dll используется в трассировке стека зависшего потока:

http://img.skitch.com/20090226-m3167dxb8iaax3wgy22eatruyp.png

Исправление Microsoft

У Microsoft есть исправление для mshtmled.dll, устраняющее проблему, очень похожую на ту, которую я наблюдаю. Но это исправление, скорее всего, установлено на машинах, на которых мы можем воспроизвести проблему, поскольку у нас есть SP3. Мне кажется, что проблема, с которой я столкнулся, аналогична той, что была исправлена. Я просто упоминаю об этом здесь на тот случай, если кто-то сочтет это полезным.

  • О ... раз уж у нас SP3: вы имеете в виду, что работаете с IE6? Эта небольшая информация могла бы пригодиться, если бы мы знали ее раньше;) VonC 27.02.2009
  • @VonC Да, по крайней мере, в моей среде у меня IE6 и SP3. Не уверен, что есть у других людей, которые воспроизводят эту проблему. Но я не уверен, что понимаю ваш комментарий; как это помогает? avernet 27.02.2009
  • Потому что у нас много prb с IE6SP3 на работе ... но только со старым настольным компьютером Hp (2002-2003). Никакая интенсивная загрузка ЦП не проявляется на более поздних версиях настольных компьютеров или более поздних версиях IE. VonC 28.02.2009
  • @VonC Понятно. В этом случае IE застревает и навсегда использует 100% CUP. Так что наличие новейшего лучшего оборудования не имеет большого значения. avernet 01.03.2009
  • Нет ответа? Может настало время щедрости (хотя я не совсем за то, как это реализовано сейчас;)): stackoverflow.com/questions/ 359727 VonC 04.03.2009
  • Да, до сих пор нет ответа. Я отложил это на второй план и обязательно обновлю его, если что-то найду. avernet 05.03.2009

internet-explorerdll

Ответы

Ответ 1 · рейтинг 2 · VonC

Как эта ветка предлагает, вы можете использовать такой инструмент, как fiddlertool, чтобы проанализировать свой HTML-трафик и проверьте, что вызывает это состояние зависания.

Поскольку mshtmled.dll обрабатывает HTML-редактирование на веб-странице, что-то в этом HTML-трафике должно запускать вызов mshtmled.


Как упоминает Алессандро в комментарии, активен JavaScript, и, поскольку mshtmled.dll связан с "манипуляциями с элементами DOM", возможно, что JavaScript действительно запускает эти вызовы mshtmled.
Отказ от ответственности: "манипуляции с DOM" - это не совсем его основная функция, поскольку mshtmled.dll описывается как часть исходной главной страницы. . Возможно, это модуль IE, который можно отключить как компонент ActiveX с именем "HtmlDlgSafeHelper".

Выберите "Управление надстройками - надстройки, которые запускаются без разрешения", и вы должны увидеть mshtmled.dll в столбце "Файл".

Может быть, этот объект запрашивается каким-то JavaScript, например:

var a = new ActiveXObject('HtmlDlgSafeHelper.HtmlDlgSafeHelper');
a.fonts = ...;

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы