Solidity-Compiler-Absturz: Ein perfekter Sturm aus alten Bugs
Ein rätselhafter Absturz des Solidity-Compilers ist kürzlich aufgetreten: Er führt zu einem Segmentation Fault, selbst beim Kompilieren von einwandfreiem Code. Die Ursache liegt in einem 12 Jahre alten Bug in der Überladungsauflösung von G++-Versionen vor 11.4, der mit den impliziten Vergleichsumschreiberegeln von C++20 interagiert, wenn der Typ `boost::rational` von Boost verarbeitet wird. Diese Kombination führt zu unendlicher Rekursion und einem Stack Overflow. Das Problem liegt nicht im Solidity-Code selbst, sondern in einer überraschenden Interaktion zwischen G++, Boost und der C++20-Spezifikation. Die Lösung besteht darin, Boost auf Version 1.75 oder höher zu aktualisieren oder G++ auf Version 14 oder höher zu aktualisieren.
Mehr lesen