boostorg / boostorg/algorithm

boost::algorithm::split_regex hangs and consumes CPU on dangling alternatives

Ouverte
#68 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
131
Forks
117
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I happened to typo a regex, and I noticed that `boost::algorithm::split_regex` started consuming a bunch of CPU. I don't know is this would have eventually caught itself and terminating. The regex in question was `;|`, and this appears to be true for any dangling `|`.

I'm a bit surprised that `boost::regex` allowed `;|` as valid, given split_regex's behavior.

Simple example up at https://gist.github.com/directionless/c38eb7dc216bcd93b40c3ecaf99f326e

I tested this on darwin with boost 1.67, and on linux with boost 1.65

(This was moved here from https://github.com/boostorg/regex/issues/76)

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par reproduire le cas `split_regex` du gist lié avec le motif `;|` final, en utilisant les environnements Boost 1.65 ou 1.67 mentionnés. Suivez l’appel jusque dans l’algorithme Boost et le comportement de regex afin d’identifier pourquoi l’utilisation du CPU ne se termine pas ; le travail est considéré comme terminé lorsque l’entrée signalée ne se bloque plus et que le comportement est couvert par un test de régression.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp
Domaine
tooling
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
38/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.