# \[mawk\] Bug a rapporter ?

**URL:** <https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 2:04 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249 "2016-02-21T14:04:39Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Knucky](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71e660/32.png) [@Knucky](https://www.debian-fr.org/u/Knucky)\
**Post date:** [Février 21, 2016, 2:04 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/1 "2016-02-21T14:04:39Z")

</div>

Salut,

Je pense avoir trouvé un bug dans awk (enfin mawk, version wheezy).

J’avais besoin de virer les tags HTML d’un fichier à la barbare, j’aurais pu le  
faire en perl :

```auto
cat /tmp/html | perl -ne '{s/<.+?>/ /g; split > 0 && print}'
```

Mais bon, j’ai pris awk :

```auto
awk '/.*/ {gsub("<[^>]+>"," ")} NF > 0 {print}' /tmp/html 
```

Ca marche mais je voulais faire une recherche moins avide (moins “greedy” quoi…), à la perl, seulement j’ai fait une typo :

```auto
# ATTENTION CETE COMMANDE BOUFFE LA RAM
awk '/.*/ {gsub("<.+*>"," ")} NF > 0 {print}' /tmp/html 
```

Mon PC se retrouve à moitié bloqué dû à une allocation de memoire en boucle (un peu comme une bombe malloc…)

J’ai appris entre temps que les recherches greedy avec mawk c’est pas possible. Mais il nous reste ce bug…

Alors la question c’est : je fais un rapport sur le BTS ?

Merci d’avance.

---

<div class="post-metadata">

**Author:** ![Taurre](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/f04885/32.png) [@Taurre](https://www.debian-fr.org/u/Taurre)\
**Post date:** [Février 21, 2016, 2:06 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/2 "2016-02-21T14:06:51Z")

</div>

Salut,

Au risque de poser une bête question, l’expression « .+\* » a-t-elle du sens ? Je veux dire, il me semble que « .+ » signifie une suite d’au moins un caractère. Donc, à quoi s’applique l’astérisque ? À cette suite d’un nombre indéterminé de caractères ? Cela m’a l’air louche.

De plus, si l’on écarte l’astérisque, l’expression « \<.+\> » va correspondre à la plus longue suite de caractères comprise entre le caractère « \< » et le caractère « \> », ce qui n’est pas ce que tu veux, me semble-t-il.

---

<div class="post-metadata">

**Author:** ![Knucky](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71e660/32.png) [@Knucky](https://www.debian-fr.org/u/Knucky)\
**Post date:** [Février 21, 2016, 2:07 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/3 "2016-02-21T14:07:06Z")

</div>

[quote=«&nbsp;Taurre&nbsp;»]  
Au risque de poser une bête question, l’expression « .+\* » a-t-elle du sens [/quote]

Salut,

Non. Mais elle n’est pas censé mettre mon PC en carafe - le ‹&nbsp;\*&nbsp;› a été tapé par inadvertance. Perl fait comme si de rien n’était, ce qui me semble un comportement sain.

C’est justement là question : est ce que l’on peut considérer comme un bug ou comme une erreur de celui qui a fait le script ? A mon avis les deux, mais une simple expression rationnelle mal tapée ne devrait pas mener à ça. C’est pour ça que je lançerais bien un bug sur le BTS Debian mais je voulais avoir d’autres avis…

Au pire balancer un message d’erreur en indiquant que c’est stupide, au mieux ignorer ‹&nbsp;\*&nbsp;› comme le fait Perl ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

---

<div class="post-metadata">

**Author:** ![Taurre](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/f04885/32.png) [@Taurre](https://www.debian-fr.org/u/Taurre)\
**Post date:** [Février 21, 2016, 2:07 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/4 "2016-02-21T14:07:07Z")

</div>

> [@Knucky](#):
>
> C’est justement là question : est ce que l’on peut considérer comme un bug ou comme une erreur de celui qui a fait le script ? A mon avis les deux, mais une simple expression rationnelle mal tapée ne devrait pas mener à ça.

Hmm… Venant du C, j’aurais tendance à considérer qu’il s’agit d’un comportement indéterminé et que, par conséquent, un peu près tout peut arriver. Cependant, je viens de jeter un œil à la [norme POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_01) et il semble en effet que ce soit un comportement contraire à cette dernière.

[quote=«&nbsp;9.1 Regular Expression Definitions&nbsp;»]invalid

This section uses the term «&nbsp;invalid&nbsp;» for certain constructs or conditions. Invalid REs shall cause the utility or function using the RE to generate an error condition. When invalid is not used, violations of the specified syntax or semantics for REs produce undefined results: this may entail an error, enabling an extended syntax for that RE, or using the construct in error as literal characters to be matched. For example, the BRE construct «&nbsp;{1,2,3}&nbsp;» does not comply with the grammar. A conforming application cannot rely on it producing an error nor matching the literal characters «&nbsp;{1,2,3}&nbsp;».[/quote]

A priori, dans le cas d’une expression non qualifiée d’invalide, il n’y a que trois comportement possible : renvoyé une erreur, effectuer la recherche s’il s’agit d’une expression régulière « étendue » ou effectuer la recherche en considérant l’expression régulière comme du texte. Toutefois, j’ai un doute sur le caractère exhaustif ou illustratif de la liste.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 2:07 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/5 "2016-02-21T14:07:11Z")

</div>

> [@Knucky](#):
>
> Non. Mais elle n’est pas censé mettre mon PC en carafe - le ‹&nbsp;\*&nbsp;› a été tapé par inadvertance. Perl fait comme si de rien n’était, ce qui me semble un comportement sain.

Oui c’est un bug.

@Taurre \> De manière général (POSIX ou pas) un comportement indéterminé ne doit pas aboutir à la consommation de toutes les ressources de ta machine. Sauf si ce que tu demande le nécessite.

---

<div class="post-metadata">

**Author:** ![Taurre](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/f04885/32.png) [@Taurre](https://www.debian-fr.org/u/Taurre)\
**Post date:** [Février 21, 2016, 2:07 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/6 "2016-02-21T14:07:44Z")

</div>

> [@MisterFreez](#):
>
> @Taurre \> De manière général (POSIX ou pas) un comportement indéterminé ne doit pas aboutir à la consommation de toutes les ressources de ta machine. Sauf si ce que tu demande le nécessite.

Hum… En effet, cela ne me paraît pas une solution très saine. ![:whistle:](https://www.debian-fr.org/uploads/default/original/1X/899b2c331f8cc02517f77948602974610a95f952.gif "Whistle")

---

<div class="post-metadata">

**Author:** ![Knucky](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71e660/32.png) [@Knucky](https://www.debian-fr.org/u/Knucky)\
**Post date:** [Février 21, 2016, 2:08 UTC](https://www.debian-fr.org/t/mawk-bug-a-rapporter/56249/7 "2016-02-21T14:08:28Z")

</div>

Salut,

Merci à tous les deux 🙂 Je ferais un rapport quand j’aurais un peu plus de temps…
