В состав нашего продукта входит плагин IE (BHO), который успешно работает в различных средах в разных версиях ОС / версиях IE.
Однако в пробной установке для одного клиента под управлением XPМашины SP3 через citrix XenDesktop, IE 7 аварийно завершает работу при выполнении следующих двух условий:
- Наш плагин загружен
- Загружается дополнение Flash-объекта Shockwave (последняя версия -Flash11e.ocx)
Некоторая дополнительная информация:
- Сбой происходит, когда мы затем пытаемся показать диалоговое окно пользователю или вскоре после этого.Однако сбой не происходит в нашем коде, который все написан на C #, он происходит в разных местах, часто ole32.dll.
- Наши диалоги - это HTML-страницы, отображаемые в элементе управления веб-браузера, показанном в формечерез form.ShowDialog (ownerWindow) в BHO.
Кажется, что любой плагин работает нормально независимо.Отключение flash или пропуск любых сайтов, использующих flash, предотвращают сбои.
Клиент достаточно любезен, и мне удалось запустить IE с инструментами отладки MS, чтобы захватить несколько дампов во времяавария.Теперь у меня возникли проблемы с интерпретацией дампов.Думая, что это повреждение кучи, я запустил средства отладки с включенной полной страницей, но это не вызвало точку останова.
Анализ с помощью инструментов отладки выглядит следующим образом:
В iexplore_ PID _5064_ Дата _12_20_2011__Time_11_19_26AM_ 161 _Second_Chance_Exception_C0000005.dmp инструкция по сборке в ole32! HandleIncomingCall + e2 в системе C: \ WINDOWS от Microsoft \32.dll от корпорации Майкрософт \ from3232 \ from.dll от Microsoft \ from323232 из Windows Server \3232 \ from32323232323232_32_32_32.dllвызвал исключение нарушения прав доступа (0xC0000005) при попытке чтения из памяти 0x03ce4ff8 в потоке
Трассировка стека в точке сбоя:
Thread 7 - System ID 1140
Entry point ieframe!CTabWindow::_TabWindowThreadProc
Create time 20/12/2011 19:18:08
Time spent in user mode 0 Days 0:0:19.828
Time spent in kernel mode 0 Days 0:0:10.468
Full Call Stack
Function Arg 1 Arg 2 Arg 3 Arg 4 Source
ole32!HandleIncomingCall+e2 0f9aafbc 00000034 00000001 07e8ab6c
ole32!STAInvoke+24 17444f80 00000001 0781efc0 077e8f10
ole32!AppInvoke+7e 17444f28 077e8f10 0781efc0 07e8ab6c
ole32!ComInvokeWithLockAndIPID+2c2 17444f28 077ec420 00000000 17444f28
ole32!ComInvoke+60 17444f28 00000400 0774ee30 07bcfe48
ole32!ThreadDispatch+23 17444f28 07bcfeb0 7752b096 00000000
ole32!ThreadWndProc+fe 005d0594 078b6ee0 0000babe 17444f2c
user32!InternalCallWinProc+28 7752b096 005d0594 00000400 0000babe
user32!UserCallWinProcCheckWow+150 00000000 7752b096 005d0594 00000400
user32!DispatchMessageWorker+306 7bcff64 00000000 07bcffb4 3e25e69b
user32!DispatchMessageW+f 07bcff64 0013e490 0013e5b8 07868ff0
ieframe!CTabWindow::_TabWindowThreadProc+189 07e03e30 0013e490 0013e5b8 07868ff0
kernel32!BaseThreadStart+37 3e25e464 07868ff0 00000000 00000000
Я идучтобы посмотреть, что еще я могу получить из этого файла дампа, но я надеюсь, что у кого-то здесь будет отличная идея.Я хотел бы протестировать намного больше материала на сайте клиента, но у нас есть только очень много шансов с ними, поэтому мне нужно использовать любое время, когда я доберусь туда очень мудро.
Для меня пара следующихПохоже, что шаги:
- Если проблема заключается в том, что во флэш-памяти что-то мешает нам показывать диалоги, я хотел бы протестировать полностью урезанный BHO, который просто показывает диалоги, чтобы показать, чтопроблема не в нашем коде.
- На машине установлено много других плагинов, было бы неплохо начать с урезанного образа и оттуда собрать его, чтобы посмотреть, когда проблема начнет срабатывать..
Иногда происходит сбой в файле pseuoserverinproc.dll, который является частью HDX MediaStream, который запускает флэш-контент локально, а не на сервере.
== update
У меня был довольно небольшой успех, когда WinDbg анализировал имеющиеся у меня дампы.Я думаю, что имеет смысл попытаться использовать gflags / windbg на настольном компьютере, у которого возникают проблемы, и отладить его в режиме реального времени.
Это был бы мой рекомендуемый следующий шаг для всех, кто находится на аналогичной должности вмомент, узнайте больше о том, насколько хорош этот совет, через несколько недель, когда у меня была возможность применить его.