Qui n’a pas d��jà été confronté au bug sournois ? Celui qui n’apparait jamais en mode debug lorsqu’on peut l’observer, mais qui est pourtant bien là, présent, tapis dans le code, prêt à bondir lorsque vous décidez de compiler en mode release. Ha ! le petit futé, il sort toujours de sa cachette, lorsque tout fière, vous décidez enfin de faire la démo à votre boss, qui avait pour seul leitmotiv durant ces dernière semaines, « Alors ça tourne !!! ». Il est la l’Heisenbug, s’esclaffant de notre maladresse.

Et bien sachez qu’en développement parallèle ce principe d’incertitude, devient une certitude. Heisenbug sera la et bien la.

A la PDC2008, Microsoft Research nous a démontré qu’avec CHESS, ont peut passer d’un état indéterminé à un état plus déterminisme.

CHESS disponible sur http://msdn.microsoft.com/en-us/devlabs/cc950526.aspx, est un outil qui permet d’analyser le code parallèle Win32 et le code .NET. (Pour le code .NET, il est utilisable sous forme d'Add-in directement dans Visual Studio)

En s’appuyant sur le planificateur de threads de Windows, il enregistrera tous les cas de figure possible, entre chaque thread  (et surtout les cas de figure que vous n’auriez pas pu mettre en évidence) jusqu’à trouver l’Heisenbug.

Mais la force, de CHESS, réside dans le faite, que vous pourrez « Rejouer » le script qui vous permettra de déceler le bug, vous pointant sur les lignes de code qui posent problème. C’est alors à vous de jouer !

CHESS est un outil qui a été d’ailleurs massivement utilisé, dans nos propres équipes de développement, comme les équipes qui conçoivent les librairies PFX pour .NET et PPL pour le monde natif (C++).

Microsoft Research, ne va d’ailleurs pas s’arrêter la, car ils travaillent actuellement sur des outils featherLite pour les data-races, afin de trouver les problèmes d’insuffisante de synchronisation, et sur Sober, qui permettra quand à lui de travailler plus sur les problèmes que pourraient injecter les compilateurs lorsqu’ils optimisent le code, et encore plus bas, sur les problèmes que nous pourrions rencontrer au niveau des processeurs et de leurs optimisations.

 

Eric Vernié