Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Креш дефолтного браузера андройда (https://javascript.ru/forum/css-html-browser/23792-kresh-defoltnogo-brauzera-androjjda.html)

max.arshinov 06.12.2011 17:42

Креш дефолтного браузера андройда
 
Столкнулся с необычной задачей. Необходимо закрешить андройд, работающий в режиме Браузера как ДефолтСкрина. Андройд поддерживает такой режим работы: включаем девайс, вылезает фуллскрин с барузером, который показывает наше приложение. PROFIT. Нужно проверить поведение андройда при креше браузера. Для ВебКита не наешел популярного креша, сломал так:

<script type="text/javascript">
i = 1;
var a = {};
d1 = document.createElement('div');
document.body.appendChild(d1);

while(true){
setInterval(function () {
(function () {
while (true) {
d = document.createElement('div');
d1.appendChild(d);
d1 = d;
a.push[d];
a.push[a];
}
}, 1)();
});
}
</script>

Срабатывает меморик в SetInterval'е. Что происходит внутри не так важно, в зависимости от фантазии рано или поздно попадаем на OutOfMemory. Мой Chrome на 64битной винде с 8ГБ оперативки это крешит за 15 секунд. Если воспользоваться просто браузером на андройде, тот же результат - браузер вылетает.

А вот если браузер работает как ДефолтСкрин, то мы видим белый фон. Ждали около 20 минут ничего не меняется. Есть подозрение, что в этом режиме браузер работает в "песочнице" и толи как-то более оптимально очищает память, толи ребутается. Непонятно. Если у кого-то есть информация, что именно происходит или есть какой-нибудь эксплойт для вебкита, который убивает его мгновенно буду очень благодарен за помощь

max.arshinov 06.12.2011 17:43

Да, забыл, речь идет об андройде 3.2

devote 06.12.2011 18:23

ужас :blink: внутри бесконечного while засунуть setInterval да еще и написанный с ошибками код

Вы хоть сами то посмотрите на код, не слишком много бесконечных циклов????

<script type="text/javascript">
   i = 1;
   var a = {};
   d1 = document.createElement('div');
   document.body.appendChild(d1);

   while(true){
       setInterval(function () {
           (function () {
               while (true) {
                   d = document.createElement('div');
                   d1.appendChild(d);
                   d1 = d;
                   a.push[d];
                   a.push[a];
               }
          }, 1)();
      }); 
   }
 </script>

devote 06.12.2011 18:24

от такого любой браузер в креш уйдет


Часовой пояс GMT +3, время: 12:39.