En juin 2009, je postais un message pour dire que ce bug était éradiqué. Et pourtant … 

Depuis cette date, j’ai reçu des rapports de crash similaires pour ce bug, bien que beaucoup moins nombreux. Mais le bug était visiblement toujours là.
Et pire encore, j’ai eu un contact chez qui le programme crashait à chaque changement de langue, sous Windows 7. 

J’ai donc décidé de retourner voir ce qui pouvait poser problème.
Mais ce bug est corriace : il ne se produit pas à chaque fois sous mon XP, et le debugguer de Visual Studio ne se positionne pas sur la ligne qui pose problème, car visiblement, c’est un plantage plus en interne, directement dans une des DLL  de .Net. 

A force de tatonnement, j’ai fini par mettre en cause différentes choses.
D’une part, le programme ne plante pas lorsqu’on le quitte simplement. Il ne plante que lorsqu’il rencontre la commande Application.Restart()
Donc j’ai déjà remplacé cette commande par un simple Process.Start(), avec le chemin de process manager en argument.
J’ai encore eu des crash, mais beaucoup moins nombreux. Et à chaque fois, j’ai l’impression que BPM a tenté d’accéder à un élément qui ne devait plus exister.

D’autre part, le crash ne se produisant que lorsque la fenêtre d’option est ouverte, j’ai donc cherché ce qu’elle avait de différent par rapport aux autres fenêtres du programme.

La seule chose, c’est la combobox de sélection de la langue.
Quand la valeur sélectionnée change, BPM exécute un code pour sauvegarder et redémarrer la langue.
Et donc forcément, quand on ferme cette fenêtre, la valeur sélectionnée change, que que la combobox « se vide ».
Mais dans le cas d’un redémarrage de l’application, il semblerait qu’il arrivait parfois que la fermeture relance l’exécution de ce même code, qui plantait, vu que la fenêtre était en cours de fermeture, et que certains éléments n’étaient déjà plus accessibles. En gros, y’avait une boucle d’exécution de code, qui au bout d’un moment finissait par planter en tentant d’accéder à des éléments qui n’étaient plus présents en mémoire.
J’ai donc retiré à la volée la gestion de l’évènement « change » sur la comboxbox lors du premier passage, avant de demander la fermeture et le restart de l’application.

Pour le moment, je n’ai pas réussi à provoquer à nouveau le bug, donc j’espère l’avoir enfin éradiqué !