Solidity 컴파일러 충돌: 오래된 버그로 인한 완벽한 폭풍
2025-08-16

최근 Solidity 컴파일러에서 당황스러운 충돌 문제가 발생했습니다. 완벽하게 유효한 코드를 컴파일하더라도 세그멘테이션 오류가 발생합니다. 원인은 G++ 11.4 이전 버전에서 C++20 환경에서 Boost 라이브러리의 boost::rational 형식을 처리할 때 발생하는 12년이나 된 오버로드 해결 버그로 밝혀졌습니다. C++20의 암시적 비교 재작성 규칙과 결합하여 무한 재귀를 일으켜 스택 오버플로우가 발생합니다. 이 문제는 Solidity 코드 자체에 있는 것이 아니라 G++, Boost, C++20 사양의 조합으로 인해 발생하는 예상치 못한 결과입니다. 해결책은 Boost 라이브러리를 1.75 이상으로 업그레이드하거나 G++를 14 이상으로 업그레이드하는 것입니다.
(osec.io)