Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WebBrowser deadlock 
:(
    Опции темы
December
Дата 1.2.2006, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Greetings All!

Суть проблемы:
существуют страницы, которые наглухо завешивают TWebBrowser, вместе с приложением-хостом. У этого явления есть два очень мерзких сопутствующих фактора:
1. Нативного осла, а также Оперу или Рыжую Лису, такие странички (назовём их "ж-страницы") не завешивают. Некоторые также вешают и чистого осла.
2. После какого-то момента управление в свой код не возвращается. Где-то внутри COM-объекта происходит что-то, напоминающее бесконечную рекурсию (хотя дополнительная память не пожирается даже на длительном промежутке времени). Таким образом, как только ж-страница проявила себя, культурными методами проиложение уже не спасти.
Вот пример, который демонстрирует, как может работать ж-страница.
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<title>trouble</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">
function resize_iframe()
{
  parent.document.getElementById('divIncludedContent').style.height = this.document.body.offsetHeight + "px";
}
</script>
</HEAD>

<body onload="resize_iframe();" onresize="resize_iframe();">
<a href="testsite.com">I should work</a>
<div id="divIncludedContent">
    <iframe src="http://www.testsite.com/"></iframe>
</div> 
        
</body>

Это минимизированный вариант, он вешает даже нативного осла. Только не думайте, что это я такое чудо изобрёл... С этой проблемой столкнулся на реальном сайте, в оригинале ж-страница работает с простым ослом нормально.

Для того, чтобы проверить, как оно всё не работает, создайте минимальное приложение с TWebBrowser (или TEmbeddedWB) на форме и прикажите ему Navigate на страницу с вышеприведённым контентом, после чего оно прикажет долго жить. Maxthon тоже на этом сыпется... Короче, вот так можно срубить любую бродилку на базе WebBrowser ActiveX от всеми любимых мелких и мягких.

В чём вопрос:
1. Главное - как можно отдетектить зависание и культурно прибить заглючивший TWebBrowser? Может, запустить какой-то дополнительный поток, который следит за всеми TWebBrowser и давит мёртвых? Тогда как опрашивать компонент? Как его придушить из другого потока?
2. Вторичное - как можно такое предотвратить? Сейчас я просто знаю, где такая гадость происходит, мониторю OnProgressChange и убиваю onresize, но это не универсальное решение smile Есть идеи, как это сделать правильно?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 1.2.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Цитата(December @ 1.2.2006, 01:48 Найти цитируемый пост)

Для того, чтобы проверить, как оно всё не работает, создайте минимальное приложение с TWebBrowser (или TEmbeddedWB) на форме и прикажите ему Navigate на страницу с вышеприведённым контентом, после чего оно прикажет долго жить. Maxthon тоже на этом сыпется... Короче, вот так можно срубить любую бродилку на базе WebBrowser ActiveX от всеми любимых мелких и мягких.
У меня работает... Может это только для определенных версий осла ? У меня 6.0.2800.1106 (Win2k)

Это сообщение отредактировал(а) p0s0l - 1.2.2006, 10:26


--------------------
С уважением, г-н Посол.
PM   Вверх
December
Дата 1.2.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



p0s0l
У меня тоже 6.0.2800.1106 под Win2k...
Может, настройки какие-то левые... Разве у тебя нет 100%-ной загрузки проца и зависания приложения?

Сделай одолжение, попробуй открыть twebbrowser'ом хтмлку из прилагаемого архива...

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Tmp.rar 10,26 Kb


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 1.2.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Проверил ещё, вот в таком варианте работает, потому что не может достучаться до testsite.com (спасибо аутпосту)
Код
<iframe src="http://www.testsite.com/"></iframe>

зато вот в таком варианте - уже нет.
Код
<iframe src="damn.html"></iframe>

На XP тоже валится...


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 1.2.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Кому не страшно, и кто юзает осла или осёл-based бродилки - попробуйте зайти вот сюда и расскажите свои ощущения smile
Тока предупреждаю сразу - лучше закройте все остальные табы и сохраните важную информацию!
http://dcmbr.net/iesucks.php


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Rennigth
Дата 2.2.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: нет
Всего: 76



Win2k SP4 IE 6.0.2600.0000 виснет, цп 100%


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
p0s0l
Дата 3.2.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Цитата(December @ 1.2.2006, 11:11 Найти цитируемый пост)

p0s0l
У меня тоже 6.0.2800.1106 под Win2k...
Может, настройки какие-то левые... Разве у тебя нет 100%-ной загрузки проца и зависания приложения?
Нет никакой загрузки... smile

Цитата(December @ 1.2.2006, 11:11 Найти цитируемый пост)

Сделай одолжение, попробуй открыть twebbrowser'ом хтмлку из прилагаемого архива...
Открылось нормально - как в самом IE, так и в TWebBrowser'е... Правда когда открывал в TWebBrowser - выскочило "Ошибка выполнения сценария, продолжить Да/Нет"... Но никаких зависаний...

Насчет настроек - понизил уровень безопасности в ИЕ до минимума...
Цитата(December @ 1.2.2006, 21:12 Найти цитируемый пост)

http://217.12.203.58/iesucks.php
"Невозможно отобразить страницу"... ты уже убрал страничку ?



--------------------
С уважением, г-н Посол.
PM   Вверх
December
Дата 3.2.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



просто машину свою выключил, попробуй плиз ещё раз...


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 4.2.2006, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Переместил ж-страничку на постоянное место:
http://dcmbr.net/iesucks.php
Можете посылать своих знакомых на этот урл, если хотите поиздеваться smile


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 10.2.2006, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Цитата(December @ 4.2.2006, 01:46 Найти цитируемый пост)

Переместил ж-страничку на постоянное место:
http://dcmbr.net/iesucks.php
Можете посылать своих знакомых на этот урл, если хотите поиздеваться
Ух, и правда, виснет smile
Добавлено @ 16:59
А как проблему решил ? (Если решил)


--------------------
С уважением, г-н Посол.
PM   Вверх
December
Дата 10.2.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 12
Всего: 57



Цитата(p0s0l @ 10.2.2006, 16:49 Найти цитируемый пост)

А как проблему решил ? (Если решил)

Путём откладывания на неопределённый срок...
Цитата(p0s0l @ 10.2.2006, 16:49 Найти цитируемый пост)

Ух, и правда, виснет

это при тех же минимальных настройках безопасности?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.