Pull to refresh
27
0

sysadmin, hobby gamdev

Send message

Простой и не очень очевидный способ повесить chrome, firefox и nodejs внутри нативной функции

Reading time2 min
Views25K

Вот весь код: var x = []; x[0x7fffffff]=1; JSON.stringify(x);


Для желающих попробовать: jsfiddle


Таким незамысловатым способом, можно намертво повесить firefox, довести до падения вкладку хрома и повесить основной поток nodejs.

Самое примечательное в этом то, что зависание происходит на уровне нативного кода функции JSON.stringify, что не позволяет прервать выполнение в том же firefox'е, как это обычно бывает при простом while(true);.

При выполнении внутри WebWorker'а в chrome, страница продолжает отвечать, но terminate не может завершить поток.

Так же по понятным причинам, такой код не обнаруживается jslint'ом.

Как это работает и как автор докатился до жизни такой
Total votes 57: ↑53 and ↓4+49
Comments30

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity