Plantage du compilateur Solidity : une tempête parfaite de bogues anciens
Un problème de plantage troublant est récemment apparu dans le compilateur Solidity : il provoque une faute de segmentation même lors de la compilation de code parfaitement valide. La cause racine a été identifiée comme étant un bogue de résolution de surcharge vieux de 12 ans dans les versions de G++ antérieures à la 11.4, interagissant avec les règles de réécriture de comparaison implicite de C++20 lors de la gestion du type `boost::rational` de Boost. Cette combinaison entraîne une récursion infinie et un dépassement de pile. Le problème ne réside pas dans le code Solidity lui-même, mais dans une interaction surprenante entre G++, Boost et la spécification C++20. La solution consiste à mettre à niveau Boost vers la version 1.75 ou ultérieure, ou à mettre à niveau G++ vers la version 14 ou ultérieure.