[SPIP Zone] Limite à la longueur des paramètres d'un modèle (2700 environ) ?

Bonjour,

J'ai migré dernièrement un site de SPIP 3.1 à SPIP 3.2.1 (SVN).
Et un modèle n'est plus interprété :
http://internet22.catholique.fr/Couverture-web-des-paroisses-du-diocese.html

Il s'agit de https://contrib.spip.net/Plugin-Image-Cliquable

J'ai fait des tests en supprimant des items des paramètres.
En gros, à 2646 ça passe.
Mais à 2749, ça casse.

Ça marchait en SPIP 3.1

Autre différence : avant, le serveur était en PHP 5.6 (Debian 8)
Maintenant, PHP 7.0 (Debian 9)

Bug de SPIP ?

--
RealET

RealET a écrit le 08/11/2018 à 10:47 :

Bonjour,

J'ai migré dernièrement un site de SPIP 3.1 à SPIP 3.2.1 (SVN).
Et un modèle n'est plus interprété :
http://internet22.catholique.fr/Couverture-web-des-paroisses-du-diocese.html

Il s'agit de Plugin Image Cliquable - SPIP-Contrib

J'ai fait des tests en supprimant des items des paramètres.
En gros, à 2646 ça passe.
Mais à 2749, ça casse.

Ça marchait en SPIP 3.1

Autre différence : avant, le serveur était en PHP 5.6 (Debian 8)
Maintenant, PHP 7.0 (Debian 9)

Bug de SPIP ?

Je complète le rapport de bug.
Testé en local avec le plugin https://contrib.spip.net/Modele-exergue, ceci est traité sans problème :
<exergue|texte=123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345|position=left>

Alors que si je rajoute 1 caractère, il n'y a plus rien de visible de produit.
Le code contient :
<p><tt></tt></p>

Alors que normalement, ça produit :
<div class="exergue float-left">
         <p>123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345</p>
</div>

Je ne m'explique même pas les <tt></tt> produits !!!!!!

--
RealET

Hop,

Le 10/11/2018 à 16:55, RealET a écrit :

Je complète le rapport de bug.
Testé en local avec le plugin https://contrib.spip.net/Modele-exergue,

Alors que si je rajoute 1 caractère, il n'y a plus rien de visible de produit.
Le code contient :
<p><tt></tt></p>

Je ne m'explique même pas les <tt></tt> produits !!!!!!

Ça semble être le rendu du modèle suivant dans textwheel :

https://zone.spip.net/trac/spip-zone/browser/spip-zone/_core_/plugins/textwheel/modeles/dist.html

++
b_b

Bruno Bergot a écrit le 13/11/2018 à 09:46 :

Hop,

Le 10/11/2018 à 16:55, RealET a écrit :

Je complète le rapport de bug.
Testé en local avec le plugin https://contrib.spip.net/Modele-exergue,

Alors que si je rajoute 1 caractère, il n'y a plus rien de visible de produit.
Le code contient :
<p><tt></tt></p>

Je ne m'explique même pas les <tt></tt> produits !!!!!!

Ça semble être le rendu du modèle suivant dans textwheel :

https://zone.spip.net/trac/spip-zone/browser/spip-zone/_core_/plugins/textwheel/modeles/dist.html

Merci.
Ça explique ce qui pourrait générer ce <tt>

Mais pas cette limite en nombre de caractères dans un modèle.

--
RealET

Le 13/11/2018 à 12:06, RealET a écrit :

https://zone.spip.net/trac/spip-zone/browser/spip-zone/_core_/plugins/textwheel/modeles/dist.html

Merci.
Ça explique ce qui pourrait générer ce <tt>
Mais pas cette limite en nombre de caractères dans un modèle.

Si "dist" est (comme ailleurs) ce qui s'applique par défaut
c'est que le parseur de reconnaît plus le modèle
quand il y a trop loin entre le début et la fin......

JL

RealET a écrit le 08/11/2018 à 10:47 :

Bonjour,

J'ai migré dernièrement un site de SPIP 3.1 à SPIP 3.2.1 (SVN).
Et un modèle n'est plus interprété :
http://internet22.catholique.fr/Couverture-web-des-paroisses-du-diocese.html

Il s'agit de Plugin Image Cliquable - SPIP-Contrib

J'ai fait des tests en supprimant des items des paramètres.
En gros, à 2646 ça passe.
Mais à 2749, ça casse.

Ça marchait en SPIP 3.1

Autre différence : avant, le serveur était en PHP 5.6 (Debian 8)
Maintenant, PHP 7.0 (Debian 9)

Bug de SPIP ?

Non, problème introduit avec PHP 7 (PHP 5 ne l'avait pas).
Trouvé via php - RegEx not working for long pattern PCRE's JIT compiler stack limit - PHP7 - Stack Overflow

En local, je n'ai plus le problème en ayant mis dans mes_options.php :
ini_set('pcre.jit', 0);

Mais (pour l'instant), ça ne change rien en ligne :frowning:

montre que ça plante de php 7.0.30 à 7.3.0alpha2
Et que ça remarche à partir de l'alpha3
Et que ça marchait en 5.6

--
RealET

RealET a écrit le 14/11/2018 à 11:48 :

RealET a écrit le 08/11/2018 à 10:47 :

Bonjour,

J'ai migré dernièrement un site de SPIP 3.1 à SPIP 3.2.1 (SVN).
Et un modèle n'est plus interprété :
http://internet22.catholique.fr/Couverture-web-des-paroisses-du-diocese.html

Il s'agit de Plugin Image Cliquable - SPIP-Contrib

J'ai fait des tests en supprimant des items des paramètres.
En gros, à 2646 ça passe.
Mais à 2749, ça casse.

Ça marchait en SPIP 3.1

Autre différence : avant, le serveur était en PHP 5.6 (Debian 8)
Maintenant, PHP 7.0 (Debian 9)

Bug de SPIP ?

Non, problème introduit avec PHP 7 (PHP 5 ne l'avait pas).
Trouvé via php - RegEx not working for long pattern PCRE's JIT compiler stack limit - PHP7 - Stack Overflow

En local, je n'ai plus le problème en ayant mis dans mes_options.php :
ini_set('pcre.jit', 0);

Mais (pour l'instant), ça ne change rien en ligne :frowning:

Online PHP editor | output for X5N5l
montre que ça plante de php 7.0.30 à 7.3.0alpha2
Et que ça remarche à partir de l'alpha3
Et que ça marchait en 5.6

regex101: build, test, and debug regex permet de voir que la regex fait énormément de backtrack et donc d'étapes : 19105 étapes.

J'ai idée que l'usage de conditions serait plus efficace, mais j'ai pas trouvé comment.

--
RealET

Après avoir testé que ça plantait aussi sur SPIP Contrib, j'ai créé un ticket : https://core.spip.net/issues/4230

--
RealET