Quadratic time in `xml.etree.ElementTree` when parsing text with a large number of comments
Ouverte
Personne n'a encore pris cette issue.
extension-modules
topic-XML
type-bug
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
import time
import xml.etree.ElementTree as ET
for N in (5000, 10000, 20000, 40000, 80000):
data = b"<r>" + b"x<!---->" * N + b"</r>"
s = time.perf_counter()
ET.fromstring(data)
dt = time.perf_counter() - s
print(f"{N} {dt}s")
I see:
$ python repro.py
5000 0.025435873976675794s
10000 0.0888163199997507s
20000 0.3610062320076395s
40000 1.4099939750158228s
80000 5.41402202800964s
Found by OSS-Fuzz.
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
- gh-155407
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le reproducteur ET.fromstring() présent dans l’issue et comparez les temps d’exécution à mesure que le nombre de commentaires augmente. Consultez la PR liée gh-155407 pour comprendre le travail déjà en cours ; la tâche est considérée comme terminée lorsque l’analyse de cette entrée ne présente plus de croissance quadratique du temps d’exécution.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- performance
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100