Un peu de CSS peut faire planter complètement un appareil iOS
Un bug dans WebKit, le moteur d’affichage de Safari, peut faire planter totalement un appareil iOS en affichant une page web qui contient quelques lignes de codes CSS. Ce bug touche toutes les versions d’iOS, y compris la GM d’iOS 12, installée sur cet iPhone, et même les Mac, même si certains évoquent uniquement un plantage de Safari, pas de tout macOS.
Les autres navigateurs ne sont pas nécessairement touchés, puisque le bug est lié à une propriété CSS récente, encore considérée comme expérimentale et qui n’est pas présente partout. Chrome, par exemple, ne l’active pas encore par défaut et la page web s’affichera sans problème… sauf si vous choisissez d’activer cette propriété. Safari est l’un des premiers navigateurs à l’intégrer par défaut, mais manifestement, il reste encore des bugs dans sa gestion.
Si vous avez ouvert le lien, donné dans ce tweet pour les curieux et que votre navigateur se bloque sur macOS, il est inutile de redémarrer ou même de réinstaller le système comme certains l’ont fait. Rappelons le raccourci pour forcer une app à quitter, ce qui devrait suffire dans ce cas : ⌘⌥esc
. Si Safari est configuré pour rouvrir la dernière session, celle-ci posera tout autant problème : lancez le navigateur tout en maintenant la touche ⇧
enfoncée pour ouvrir une nouvelle session.
Autant de div imbriqués c’est pas sain...
Le div c'est du HTML donc ce n'est pas le soucis qui concerne cet article.
@bonnepoire
À mon avis ça fait parti de la mise à mort. Il y a 3486 div imbriquées
@frankm
"À mon avis ça fait parti de la mise à mort. Il y a 3486 div imbriquées"
En 16 bit, un ordinateur sait déja compter jusqu’à 16383 voire 32767.
Il y a en outre plusieurs GB de mémoire.
Je pense que 3486 est un chiffre gérable en 2018. Surtout par les meilleurs smartphones jamais construits dotés de processeurs bioniques qui humilient la concurrence et même les ordinateurs portables.
Non ?
@fte
Pas forcément. Ça s'applique à chaque div. Une fonction en développement peut-être buggé mal optimisée, avec un temps d'exécution pas très frais, etc. Et chaque occurence ne fait pas 1 ou 2 octets seulement.
@frankm
On ne fait pas de fonctionnel si on ne maitrise pas la récursion et les dépassements de pile. Non mais. C’est scandaleux.
@bonnepoire
Oui mais le problème c’est que la propriété css s’applique à toutes les div... et y’a beaucoup de div, pour une propriété qui applique un flou sur du flou sur du flou, y’a pas vraiment de quoi être étonné que ça plante, non ?
@Guizilla
Tout à fait !
@Guizilla
Un flou ne peut que s’appliquer sur une image nette, sinon ça plante ? Mais euh... si le bébé gigote, on ne peut pas publier un album pour grand-maman et sa tablette ? C’est chiant.
@fte
"Un flou ne peut que s’appliquer sur une image nette, sinon ça plante"
What pourquoi pas !
Sinon si c'est votre explication : une div floue, refloue, plantage, refloue, plantage, ... x3000
@fte
Pardon je rectifie : (un flou sur) * 3486 sur une image
Ca change pas le problème
Donc ça fait planter iOS et safari sur MacOS. Le titre est pas toit à fait raccord avec le,contenu.
Sinon quid des autres OS, windows et Android ?
Quelqu'un a testé ?
Justement... Autant de DIV ça revient à faire un WHILE.
Ce qui serait génial, ça serait un système d’exploitation moderne préemptif et à memoire protégée, pour qu’une application ne puisse ni bloquer les autres applications ou le système, ni les planter.
Hum, wait...
@fte
Ouais.
Ou alors que le système d'exploitation autorise la diversité des solutions logicielles pour éviter qu'un bug aux conséquences critiques (comme un reboot) induit par un logiciel imposé par le système d'exploitation expose tous les utilisateurs de manière identique et incontournable.
@byte_order
"autorise la diversité"
Alors il ne faut pas exagérer, ce serait ouvrir la porte à la pornographie ! La PORNOGRAPHIE !
Safari est sûrement le seul à créer du bitmap avec de genre de filtres (j’ai constaté du crénelage sur des SVG). L’accélération matérielle utilise le processeur - incapable de générer le rendu - d’où le plantage...
Ça fait des lustres que CSS 3 est en bêta
Ça fait juste crasher l'application sur iOS 12