Почему происходит сбой моего сайта в IE7 при переходе на страницу, на которой есть еще один переход? - PullRequest
1 голос
/ 08 апреля 2009

Пожалуйста, посмотрите на http://www.idea -palette.com

У меня есть несколько страниц, которые исчезают с помощью верхней навигации. Когда пользователь нажимает любую из указанных выше кнопок, чтобы исчезнуть на другой странице, содержащей слайд-шоу, с помощью подключаемого модуля jQuery Cycle, IE7 падает.

Когда я комментирую jQuery, который управляет затуханием слайд-шоу, IE7 больше не падает. Вы можете видеть это здесь: http://www.idea -palette.com / IEindex.php

Полагаю, IE7 не нравится, когда он затухает в некотором контенте, который содержит какой-то другой контент, который уже исчезает. Я предполагаю, что оба вместе как-то перегружают IE7, поэтому он вылетает.

Прежде чем я выяснил, что плагин jQuery Cycle вызывал сбой страницы, я спросил, почему это происходит ( Почему мой веб-сайт падает в IE? ), и jeffamaphone на stackoverflow обнаружил эту информацию, когда глядя на мой сайт:

'Это как-то связано с вашим фильтром DirectX (вероятно, что делает затухание). Вот стек, а EAX равен NULL. Что бы ни делал код, он пытается переопределить EAX:

CDXTFilterBehavior :: _ ClearSurface: 6C8E87E1 mov edi, edi 6C8E87E3 push ebp
6C8E87E4 mov ebp, esp 6C8E87E6 push ecx
6C8E87E7 mov eax, dword ptr [ebp + 0Ch] 6C8E87EA mov ecx, dword ptr [eax] <--- EAX равен NULL </p>

dxtrans.dll! CDXTFilterBehavior :: _ ClearSurface ()
dxtrans.dll! CDXTFilterBehavior :: _ DrawUnfilteredElementLayers ()
dxtrans.dll! CDXTFilterBehavior :: _ DrawElementWithProceduralSurfaces ()
dxtrans.dll! CDXTFilterBehavior :: _ ExecuteFilterChain ()
dxtrans.dll! CDXTFilterBehavior :: Draw ()
mshtml.dll! CPeerHolder :: Draw ()
mshtml.dll! CLayout :: DrawClientLayers ()
MSHTML.dll! CDispContainer :: DrawSelf ()
mshtml.dll! CDispNode :: Draw ()
MSHTML.dll! CDispContainer :: DrawChildren ()
MSHTML.dll! CDispContainer :: DrawSelf ()
mshtml.dll! CDispNode :: Draw ()
MSHTML.dll! CDispContainer :: DrawChildren ()
MSHTML.dll! CDispContainer :: DrawSelf ()
mshtml.dll! CDispNode :: Draw ()
MSHTML.dll! CDispContainer :: DrawChildren ()
MSHTML.dll! CDispContainer :: DrawSelf ()
mshtml.dll! CDispNode :: Draw ()
MSHTML.dll! CDispContainer :: DrawChildren ()
MSHTML.dll! CDispContainer :: DrawSelf ()
mshtml.dll! CDispNode :: Draw ()
MSHTML.dll! CDispContainer :: DrawChildren ()
MSHTML.dll! CDispContainer :: DrawSelf ()
mshtml.dll! CDispNode :: Draw ()
MSHTML.dll! CDispRoot :: DrawEntire ()
MSHTML.dll! CDispRoot :: DrawRoot ()
mshtml.dll! CView :: RenderView ()
mshtml.dll! CDoc :: OnPaint ()
MSHTML.dll! CServer :: OnWindowMessage ()
mshtml.dll! CDoc :: OnWindowMessage ()
MSHTML.dll! CServer :: WndProc ()
user32.dll!_InternalCallWinProc@20 ()
user32.dll!_UserCallWinProcCheckWow@32 ()
user32.dll!_CallWindowProcAorW@24 ()
user32.dll!_CallWindowProcW@20 ()
user32.dll!_InternalCallWinProc@20 ()
user32.dll!_UserCallWinProcCheckWow@32 ()
user32.dll!_DispatchClientMessage@20 ()
user32.dll!_fnDWORD@4 ()
ntdll.dll!_KiUserCallbackDispatcher@12 ()
user32.dll!_NtUserDispatchMessage@4 ()
user32.dll!_DispatchMessageWorker@8 ()
user32.dll!_DispatchMessageW@4 ()
ieframe.dll! CTabWindow :: _ TabWindowThreadProc ()
kernel32.dll @ BaseThreadInitThunk @ 12 ()
ntdll.dll!_RtlUserThreadStart@8 ()
ntdll.dll!_RtlUserThreadStart@8 ()

Возможно, вы удаляете элемент из DOM, пока преобразование все еще работает на нем? '

Кто-нибудь знает, как я могу решить эту проблему?

1 Ответ

2 голосов
/ 08 апреля 2009

Как я уже упоминал в комментарии, когда вы в последний раз публиковали это, если вы можете удаленно завершить работу IE, вам следует связаться с Microsoft . Эта уязвимость может привести, по крайней мере, к атаке типа «отказ в обслуживании» и, возможно, к удаленному выполнению кода или удаленному корню (ошибка, которая позволяет веб-странице аварийно завершать работу браузера по требованию, имеет высокую вероятность того, что ее можно будет использовать, чтобы позволить злоумышленнику выполнить недоверенный код на твоей машине). Хотя люди здесь могут помочь вам обойти вашу проблему, Microsoft действительно должна быть проинформирована, чтобы они могли исправить основную ошибку.

edit : и для того, чтобы попытаться обойти собственную проблему, и для сообщения об ошибке, вы должны попытаться свести проблему к минимальному тестовому случаю. Сократите весь контент до минимального набора элементов, достаточного для воспроизведения ошибки. Затем сделайте то же самое с кодом. Вы должны попытаться получить контрольный пример, состоящий всего из одного или двух изображений, и только перекрестных переходов, которые вызывают проблему, и больше ничего не присутствует.

Затем, да, чтобы сообщить об ошибке, отправьте им ссылку на ваш минимальный тестовый случай (или, если можете, включите ее в отчет об ошибке). Упомяните, что это удаленная уязвимость, приводящая к отказу в обслуживании, и что вы не знаете, может ли это привести к удаленному выполнению кода.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...