Liens connexes

Dépêche modérée par

Dépêche éditée par

: 985 bugs dans le noyau Linux

Posté par patrick_g (page perso, ). Modéré le 16 décembre 2004.
0
La société Coverity a annoncé le 14 décembre que son produit SWAT (un analyseur statique de code très sophistiqué mais sous licence propriétaire) avait décelé 985 bugs sur un total de 5.7 millions de lignes de code dans le noyau Linux 2.6.9.
La majorité des bugs se trouve dans les modules des pilotes et seulement 1% dans le c½ur du noyau.
Le ratio est donc d'environ 0.17 bugs par millier de lignes ce qui, selon l'université Carnegie Mellon, est beaucoup moins que les logiciels classiques.
En effet il n'est pas rare d'observer, dans ces logiciels, un ratio de 20 à 30 bugs par millier de lignes ce qui se traduirait par un total compris entre 114.000 et 171.000 bugs sur un projet de la taille de Linux.

Voici un total récapitulatif des bugs considérés comme critiques du noyau :

* Défauts causant un crash système : 569
* Dépassement de tampon mémoire : 25
* Fuite mémoire : 33
* Problème de sécurité : 100

> Lire la suite (108 commentaires, moyenne: 3,7).   [dépêche : 2035 caractères]

Une analyse un peu plus fouillée de cette annonce laisse toutefois entrevoir plusieurs zones d'ombres.
En premier lieu il semble que cet analyseur de code est juste une version commerciale (NdM : propriétaire) du logiciel "Stanford Checker" déjà connu et que la société Coverity est une start-up fondée pour vendre ce logiciel. Pour assurer sa promotion elle offre librement aux développeurs Linux le résultat de ses investigations. Il semble donc nécessaire de garder à l'esprit son souci de publicité.
Ensuite les ratios donnés par l'université Carnegie Mellon semblent étranges à beaucoup de commentateurs qui soulignent que les logiciels traditionnels ont plus probablement entre 1 et 5 bugs par millier de lignes de code (le chiffre de 2 pour Windows2000 a été avancé... sachant que ce système complet est bien plus gros qu'un simple noyau).
Enfin il faut bien voir que ce total de 985 bugs est un chiffre absolument minimum qui omet toutes les erreurs existantes dans le noyau mais passant, pour une raison ou pour une autre, à travers les mailles de SWAT.

Malgré tout cette annonce est bénéfique pour le projet Linux puisqu'elle va permettre de corriger des erreurs et qu'elle souligne la bonne qualité du noyau actuel.
Déclaration du kernel hacker Andrew Morton : This is a benefit to the Linux development community and we appreciate Coverity's efforts to help us improve the security and stability of Linux. We've already addressed the top priority bugs that Coverity has uncovered. It's a very useful system for high quality code."

Il est à noter que cette analyse n'est rendue possible que par la disponibilité des sources ce qui contraste singulièrement avec la situation de beaucoup d'autres systèmes dont la qualité est difficilement vérifiable (voilà un avantage réel et indiscutable de l'Open Source).
Enfin on peut évoquer le logiciel SPARSE qui est développé par Linus Torvalds lui-même afin de constituer une alternative libre à SWAT.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

je comprend pas trop...

Posté par ploum (page perso, ) le 16/12/2004 à 23:27. (lien). Évalué à 9.

Comment un logiciel peut-il détecter des bugs ?

Pour moi, un bug est quand un programmeur a mal exprimé ce qu'il voulait faire dans le langage de programmation.

Quand on programme, on part du principe que le langage fait exactement ce qu'on lui dit de faire.

En gros, je ne comprend pas trop comment fonctionne ce genre de logiciel ni quels genre de bugs il peut trouver et surtout, pourquoi c'est pas intégré dans le compilateur directement.

Coverity

Posté par ArBaDaCarBa () le 16/12/2004 à 23:31. (lien). Évalué à 8.

Je me souviens avoir voulu essayer Coverity après avoir lu un article dans Linux Magazine (US). Leur produit à l'air extrêmement bien, mais pas vraiment facile à utiliser. On peut le tester gratuitement après enregistrement, mais l'outil d'analyse reste du coté de leur machines, il faut uploader un rapport. Pas forcément très convivial, surtout quand on en a pas vraiment l'utilité (mon cas).
Du coup, je ne l'ai pas essayé... mais j'ai tout de même reçu un mail (qui semblait réellement écrit par un humain, c'est rare) pour me demander ma satisfaction. C'était plutôt gentil.

Bref, ils ont l'air de faire du bon boulot :)

Tout est relatif

Posté par xahlexx (page perso, ) le 17/12/2004 à 00:12. (lien). Évalué à 2.

Je pense que tout est relatif, même quand on regarde le chiffre annoncé de 985 bugs, la perfection n'existe pas et heuresement !

Je me pose une question, est-ce que il va y avoir une réaction de linus face à ce genre de rapport ?

13 % de « code mort »

Posté par Sylvain Sauvage () le 17/12/2004 à 00:28. (lien). Évalué à 5.

Euh, est-ce que les bogues trouvés dans le code mort (dead code) sont comptés ?

Si c'est le cas, Linux vient de perdre d'un coup environ 13 % de bogues :oP

Seulement un sous-ensemble de tous les bugs

Posté par vic () le 17/12/2004 à 07:38. (lien). Évalué à 7.

Cet outil ne peut trouver qu'un certain sous ensemble des bugs présents dans le code.

Il a déjà été appliqué de nombreuses fois au code de linux, et les bugs présents dans ce sous-ensemble ont été progressivement éliminés. Il est normal qu'il en reste très peu.

Donc cette statistique ne donne en fait que peu d'informations puisqu'un nombre inconnu de bugs indétectables par le programme subsistent.

Oui, mais où ?

Posté par CdeMills (Jabber id, ) le 17/12/2004 à 08:02. (lien). Évalué à 3.

J'ai visité les stats. Quelqu'un a-t-il trouvé comment accéder aux détails de ces bugs ? Ligne de code, opération concernée, ... ?

Merci

CdM

Il y a dedans amha un paquet de faux positifs

Posté par alenvers () le 17/12/2004 à 08:16. (lien). Évalué à 1.

Il y a dedans amha un paquet de faux positifs. En effet :

1) Dead code :
#define DEBUG 0
If (DEBUG)
.... /*code mort */
est du code mort mais pas du tout un bug (ce code sera d'ailleur supprimé par le compilateur que le détectera)

2) unusedvalue :
valeurnonutilisée = 0;

Est-ce vraiment une erreur ? C'est plutôt du code qui n'a pas été nettoyé...


Pour les autres points, il est également possible de trouver des cas qui ne correspondent pas a de bug. Le tout est de savoir si un être humain ets passé après le robot pour vérifier si c'est vraiment un bug...

Polyspace

Posté par caspal () le 17/12/2004 à 09:55. (lien). Évalué à 2.

Nous, au boulot, on utilise un outil apparement similaire : Polyspace de la société Polyspace Technologies.
http://www.polyspace.com/(...)
Je ne l'ai jamais utilisé personellement.
Est-ce que certains d'entre vous connaissent, et savez-vous si il a été passé sur le noyau ?

SWAT exempté?

Posté par GhZaaark3 () le 17/12/2004 à 10:17. (lien). Évalué à 4.

Et le dit programme "SWAT", il en est à combien de bug? :)

--
moué...

lien en français

Posté par j (page perso, ) le 17/12/2004 à 14:39. (lien). Évalué à 1.

http://fr.news.yahoo.com/041214/7/46ksx.html(...)

Revenir en haut de page