Le Wed, Mar 20, 2024 at 10:07:11PM +0100, Laurent Barme a écrit : [...]
Pour mon premier travail salarié, j'ai eu pour mission de maintenir un programme d'affichage et de traitement d'informations financières en temps réel. Il était profondément buggé, son concepteur étant plus porté sur le fun que la rigueur. Mais parmi les innombrables bugs, il y en avait un qui n'était pas complètement de sa faute. La mémoire allouée au processus principale de ce programme enflait progressivement au point de le planter ; cela faisait désordre dans les salles de marché. Il m'a fallu un temps considérable pour trouver l'origine du problème. J'ai dû écrire une surcouche aux malloc()/free() pour tracer les fuites. Il y en avait une particulièrement inattendue sur la fonction time() qui manquait manifestement de free(). Le logiciel affichait les heures des principales places boursière du monde entier et la fonction time() était appelée plusieurs fois chaque seconde…
La fonction time(3) est censée être implémentée par l'environnement (libc) de ton programme. Cette interface n'alloue pas de mémoire censée être libérée par le programme appelant. Pas sûr de piger quand tu dis que ce n'était pas "complètement" de la faute de ton prédecesseur. Est-ce que cela veut dire que l'implémentation de time(3) dans la libc contenait un bug ?
Je garde de cette expérience une profonde aversion pour la maintenance d'un code écrit par un autre et une idée précise de la difficulté de cette tâche.
Ce qui n'est pas très précis, c'est où se situait ce bug dont tu parles. Tu sembles impliquer que c'était il y a longtemps, donc ça se comprend. Mais du coup je ne sais pas ce qu'on devrait en conclure.