Hadopi, partage et création

Bon, oui c’est vrai, je n’ai pas grand chose à dire là dessus. Alors, je laisse la parole à ceux qui savent l’utiliser :

Partager n’est pas voler de La Quadrature du Net.

Si l’on considère les propos de notre ministre de la culture “ce qui compte c’est l’avenir de l’industrie”, il est facile d’avoir un majorant du prix de la liberté du peuple français dans son entier : c’est le chiffre d’affaire des industries “culturelles”.

En route vers le 2.6.30 et encore merci Denis

Oui, bon, vous savez sans doute que le noyau Linux 2.6.30 est en cours de réalisation. Mais saviez-vous que grâce à l’excellent Denis Bodor toute une série de patchs a été incorporée au noyau ?

Lors de la rédaction du Hors Série Netfilter de GLMF, j’ai, avec tous les autres rédacteurs (Gwenael, Haypo, Pollux et Toady), voulu faire découvrir les dernières avancées de Netfilter. Et, forcément, lorsque l’on est sur le fil du rasoir et que l’on pousse les choses à fond pour être le plus précis possible, il arrive que l’on découvre des problèmes ou des choses pas aussi pratiques que on le désirerait.

J’ai donc réalisé une série de patchs pour améliorer l’expérience des lecteurs de ce splendide Hors Série Netfilter :

GLMF Hors série n°41

Merci donc à Denis pour nous avoir fait confiance pour ces articles et merci à Patrick McHardy d’avoir accepté mes patchs.

Mon bureau en mode noyau

Non, non, vous ne verrez pas dans cet article de screenshots du noyau ! J’ai juste envie de poster ici une capture d’écrans que j’ai réalisée et commentée il y a quelque temps. J’étais à ce moment-là en train de réaliser un des mes développements noyau les plus conséquents et cela m’avait conduit à industrialiser mon environnement de travail pour effectuer développements et tests de la manière la plus efficace possible.

Voici donc la capture :

Espace de travail

La résolution est assez élévée puisque mon bureau est constitué d’un écran 19” et d’un 22” placés côte à côte en mode twinview.

Le 22 pouces me permet d’utiliser confortablement un gvim ouvert sur 2 colonnes. Je peux ainsi éditer un fichier en lisant la documentation, ou bien comparer deux fichiers facilement. Sur le 19 pouces de gauche, j’ai fait tourner :

  • le shell pour la compilation du noyau
  • virtualbox pour les tests de modification noyau sans les reboot de machine physique
  • giggle pour l’analyse du patchset en cours de préparation

Je pouvais ainsi étudier les crashs ou les problèmes noyaux tout en lisant le code pour trouver mes erreurs.

Lenteur de subversion en image.

J’utilise de plus en plus git mais de nombreux projets sur lesquels je travaille utilise “encore” subversion. Récemment dans le cadre d’une séance de debug nocturne avec Pollux, j’ai tapé une commande subversion sur les sources de NuFW :

svn log -r 5437:5443

Là, ça a pris du temps, beaucoup de temps. Bon, d’accord, subversion ne stocke pas l’historique et il faut aller chercher les informations sur le réseau mais tout de même.

J’ai lancé nf3d pour voir la tête des connexions ouvertes par subversion pour réaliser sa tâche. L’analyse des dégâts a été rapide comme le montre le screenshot suivant :

nf3d : svn log sur le projet NuFW
nf3d : svn log sur le projet NuFW

En blanc, on peut voir les connexions de svn. Je ne m’étonne plus du tout de la lenteur en voyant ce carnage…

Qu’est devenue la moralité ?

À tout ceux qui ont fait de la publicité pour du lait en poudre en Afrique, à tous ceux qui ont breveté des médicaments contre le sida, à tout ceux qui touchent des millions et licencient des milliers de salariés, à tout ceux qui ont collaboré sous le régime de Vichy, rassurez-vous vous n’avez rien fait qui ne mérite que l’on s’y attarde car vous étiez dans la légalité. Vivez sereinement, les gens qui ont le pouvoir en France ne viendront pas gâcher votre vie comme vous l’avez fait à d’autres.

On arrive à cette conclusion si l’on analyse les réactions de M. Copé et M. Sarkozy sur l’affaire Kouchner. Je ne m’appuie pas sur le fond de l’affaire mais les arguments employés tant par le président du groupe UMP à l’assemblée que par le président de l’UMP de la République. Leurs deux discours de défense du ministre d’ouverture ont été des copies conformes, si l’on prend celui de M. Sarkozy :

Monsieur Kouchner n’est accusé de rien d’illégal dans ce livre et il n’y a donc pas de quoi s’inquiéter

Il y avait une légère variante pour M. Copé qui réagissait avant la parution du livre :

Si rien d’illégal n’est révélé, M. Kouchner ne doit pas être inquiété

Voilà, je n’ai pas envie de faire long, les limites de la moralité sont fixées par le cadre légal et tout ce qui reste dans le cadre légal n’est pas condamnable moralement.

Tueurs de bébés africains, tueurs de malades du sida, briseurs de vie, complices de génocide, vous voilà rassurés sur votre moralité.

Un publiciste et un physicien sont dans une Renault …

Le publiciste crie à la face du monde son slogan dont il est très fier :

Renault – La France avance Renault accélère

Le physicien répond alors :

Comme c’est triste, Renault va délocaliser.

Ce discours qu’à première vue Ionesco n’aurait pas renié est pourtant complétement logique. Le slogan annonce en effet que la France se déplace vers l’avant et que Renault accélère. On en déduit donc que Renault est en accélération par rapport au référentiel France. La vitesse de Renault dans ce référentiel va donc augmenter. La taille de la France étant finie, on en déduit qu’au bout d’un certain temps, Renault va sortir de France. En terme économique, on appelle ça une délocalisation.

Blague à part, si on considère que le grand succès actuel de Renault est la Logan, notre physicien n’est malheureusement pas très loin de la vérité.

La classe et la coquetterie

Dans la série, il ne faut pas confondre la classe et la coquetterie, je vous présente le manteau en fausse fourrure léopard avec des imprimés Mickey et Minnie :

Manteau de fourrure Mickey
Fourrure léopard avec imprimés Mickey

Il faut me croire sur parole, mais la petite tache rouge dans le pli sur la droite du manteau, c’est le ruban de Minnie qui est rouge comme il se doit.

PS : je m’excuse platement envers le groupe facebook des amateurs de fourrures Walt Disney mais j’ai du mal à comprendre leur passion.

Portrait d’un acheteur d’Office

Bon, la publicité Microsoft Office, j’en parle, j’en parle mais ais-je la preuve de son efficacité ? Ais-je par exemple vu quelqu’un ayant acheté Office ?

Et oui, voilà la photo :

Victime de la pub Office
Victime de la pub Office

L’écharpe OM autour du cou, le téléphone tactile dans une main et la boite Microsoft Office dans l’autre, dans le métro Ligne 14, voici mon premier exemplaire d’acheteur du pack Office.

Contribution au libre, 2009 commence fort.

Du côté de mes contributions au logiciel libre, l’année 2009 commence assez fort. Il semble que j’ai réussi à déclencher une petite révolution.

Le système de test de NuFW avait mis en évidence un crash rare, non reproductible facilement dans nuauth, le serveur d’authentification de NuFW. Les sorties de gdb ou valgrind révélaient un problème absurde dans la bibliothèque cyrus-sasl. NuFW l’utilise pour réaliser la phase d’authentification des utilisateurs. Le crash apparaissait lors d’un appel à sasl_dispose() qui est la fonction à appeler lorsque l’on a terminé la phase d’authentification. Après maintes vérifications et plusieurs dizaines d’heures de debug, j’étais convaincu que nuauth, le serveur d’authentification de NuFW, utilisait la bibliothèque de manière correcte et que le code environnant était correct.

Lorsque l’utilisation d’une bibliothèque est légitime et que l’on obtient un plantage, c’est que l’on a trouvé un bug. J’ai donc alors commencé à enquêter sur Cyrus-sasl. Cette bibliothèque est développée dans le cadre du projet cyrus (serveur de mail imap) par la Carnegie Mellon University. Elle est utilisée par un nombre conséquent de logiciels libres fameux (dont openldap, sendmail). Même si sendmail a une réputation sulfureuse de sécurité, il est connu pour sa stabilité. Et donc, en me lançant dans le debug de ce problème début septembre 2008, je savais que je m’attaquais à quelque chose de robuste car très utilisé. Le bug allait donc être complexe à trouver.

J’enchainais alors des séances de deboguage plus ou moins longues passant à certain moment plusieurs longues journées de travail (lire 14 ou 15 heures) sur ce problème. Je sortais tout de même victorieux de la confrontation et le 20 septembre 2008, j’envoyais un message à la liste de diffusion cyrus-sasl : [PATCH] Fix problem with sasl_set_mutex

NuFW utilise les bibliothèques cyrus-sasl et libldap_r et libldap_r utilise lui aussi cyrus-sasl. Elle s’en sert lors de la phase d’authentification sur la base LDAP. Comme, et libldap_r et NuFW sont multithreadés ou multithreadable, ils initient tous les deux la bibliothèque cyrus-sasl pour le support des threads. Il y a notamment un appel à sasl_set_mutex() qui définit l’implémentation de mutex à utiliser. NuFW appelle cette fonction avec ses propres paramètres et libldap_r fait de même (même lorsque l’on fait un bind simple, les connaisseurs apprécieront). Or sasl_set_mutex() ne détectait pas qu’une initilisation avait déjà été faite. On avait donc un conflit possible. Les fonctions de mutex sasl prennent des paramètres void* en entrée et travaille sur ces pointeurs. Il y donc potentiellement des casts dangereux.

Dans le cas de NuFW, le problème était beaucoup plus radical. L’initialisation de libldap_r se fait lors du chargement du module ldap de nuauth. Par conséquent, c’est la fonction ldap qui est utilisée après chargement du module. Or, nuauth peut changer de configuration et donc de modules à chaud. Il réalise notamment un déchargement des modules. Or, cela ne met pas à jour la fonction mutex de sasl qui appelle donc une fonction déchargée. Ceci conduit immanquablement au crash. Cette fonctionnalité de modification de configuration à chaud est massivement utilisé dans le système de tests de NuFW et c’est donc pour cette raison que le crash ne se produisait qu’à cet endroit.

J’aurais du déboguer plus rapidement ce problème. La piste que j’aurais du voir plus tôt était l’utilisation de fonctions stockées à des emplacements mémoires non valides. Cette information était donnée par gdb et j’aurais du lui faire d’avantage confiance.

Ma remontée de bug et mon patch ont rapidement été pris au sérieux et un patch implémentant mon idée a été commité dans les sources : Fixed sasl_set_mutex() to disallow changing mutex management functions once sasl_server_init/sasl_client_init is called

J’étais content de voir ce correctif appliqué, mais vu la criticité pour NuFW, j’aurais été satisfait de voir arriver une nouvelle version de cyrus-sasl fixant ce bug. Le problème étant déclenché par une utilisation précise de la bibliothèque, je n’étais pas en droit de remonter mon exigence. De plus, la dernière version de cyrus-sasl date du 19 mai 2006 et je me doutais donc que je n’allais pas être entendu.

Début janvier, un mail envoyé sur la liste a pointé le fait que le bug était reproductible en utilisant le stockage des mots de passe sasl dans ldap : En utilisant lui aussi la bibliothèque libldap_r cyrus-sasl se mordait la queue. Le bug était donc aussi interne à cyrus-sasl. Fort de cette conclusion, j’envoyais une réponse au message signalant le problème :

This made the bug self contained and not dependant of other applications. Given the fact that the effect of this bug is a crash of the calling program, it could be interesting to release a new version of the sasl library. (my 0.02$)

J’avais ainsi osé demandé une nouvelle version sur un logiciel où je n’avais pas écrit une ligne de code. À ma surprise, cela s’est conclu par ce message :  Next release of CMU SASL – call for favorite bugfixes où un membre de l’équipe de développement annonce l’arrivée probable, aux alentours du 15 février, d’une nouvelle version de la bibliothèque et demande quels sont les corrections de bugs que les utilisateurs voudraient voir figurer dans cette version.

Je commence donc l’année 2009, en réussissant à déclencher la sortie d’une nouvelle version d’une bibliothèque qui n’avait pas eu de nouvelles versions depuis près de trois ans !

Je conclus ce poste en plagiant pollux et en revoyant mes objectifs de contributions à la hausse pour l’an prochain :

En 2010, je déclenche une sortie de Debian.