Следующие шаги отладки сбоя в среде клиента - PullRequest
4 голосов
/ 21 декабря 2011

В состав нашего продукта входит плагин 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 на настольном компьютере, у которого возникают проблемы, и отладить его в режиме реального времени.

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

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

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

Я должен признать, что некоторое время не устанавливал его, но я верю, что эти ссылки могут вам помочь:

Инструкции по настройке версии отладчика для вывода журналов:

http://kb2.adobe.com/cps/403/kb403009.html

Ссылка для скачивания версии отладчика:

http://www.adobe.com/support/flashplayer/downloads.html

1 голос
/ 01 февраля 2012

Мы решили проблему в конце (хорошо обошли ее).Если кому-то интересно, вот как мы это сделали.

Анализ дампов стека с помощью WinDbg (который является отличным инструментом).Мы обнаружили, что после того, как проблема была изолирована от показа WinForms в iexplore.exe после загрузки флэш-памяти в развертываниях XenDesktop.Зная это, мы смогли обойти эту проблему.

Ключом к получению хороших аварийных дампов, выработке минимального сценария воспроизведения и хорошего клиента, который позволил нам проверить нашу теорию!

1 голос
/ 21 декабря 2011

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

...