Journal De GCC à Clang en passant par Firefox

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
51
7
déc.
2024

Demat'iNal,

il y a quelques temps, un collègue me pointait à un rapport de bug dans Firefox, suite à un warning remonté par GCC mais pas par Clang (celui là de mémoire).

Corriger le warning n'était pas un problème en soit. Le problème, c'est de passer à côté de soucis potentiels tout ça parce que GCC et Clang ont des warning différents. En parcourant les logs, je suis tombé sur un avertissement de GCC qui faisait écho à des sujets que j'aime bien : en C++, c'est un comportement indéfini de passer un pointeur vers un objet vers un type non trivialement copiable en tant que premier argument de memcpy (cf. cppreference.

Prenant mon courage à deux mains, j'ai implémenté le même warning dans Clang, sous le nom -Wnontrivial-memcall.

Mais là où l'histoire est amusante, c'est que Firefox est aussi compilé avec les versions de développement de Clang, et qu'en fin de semaine, quel bug a été ouvert ? Ce bug qui répertorie, en substance, tous les cas dans la base de code de Firefox où justement, le motif identifié par l'avertissement sus-mentionné apparait.

Belle illustration de l'adage « tendre le bâton pour se faire battre », non ?

PS: Correctif en cours, bien sûr

  • # Chapeau bas

    Posté par  (site web personnel, Mastodon) . Évalué à 9 (+8/-0).

    Chapeau bas pour avoir implémenté le même warning dans Clang. Ce n'est pas une petite affaire. Et effectivement ça peut être utile.

    Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.

  • # Propre

    Posté par  (site web personnel) . Évalué à 6 (+4/-0).

    Propre (même si je n'utilise pas Clang) !

    Pour ceux qui passeraient rapidement et auraient du mal à saisir: memcpy() est une fonction C bas niveau qui permet de copier rapidement une zone mémoire "telle quelle".
    Ça ne pose pas de problème en C lui-même ; mais en C++ qui est un langage objet plein de magie (smart pointers, références, constructeurs et destructeurs…), lui passer un objet de ce genre n'est justement 1) en général pas ce qu'on veut vraiment faire 2) un portail potentiel vers le fun !

Envoyer un commentaire

Suivre le flux des commentaires

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