Еще один баг

Dan Horák в почему-то не попавшем на Gmane письме предупредил, что они во время работы над Fedora 17 для s390 столкнулись с интересным багом с испорченным архивом ar более 4 гигабайт размером во время сборки WebKit, очень похожим на тот, что был в этот же день обнаружен François Gouget, инженером Codeweavers, участником коммьюнити Ubuntu, Debian и Wine.

К сожалению, инженер Red Hat и участник проектов Fedora, Binutils и GDB Nick Clifton, изучив проблему, выяснил, что она отличается от той, что найдена François Gouget - там был правильный архив, неправильно обрабатываемый утилитами из binutils, а тут - действительно поврежденный архив. Оказывается, что в формате ar-архивов заложены серьезные ограничения (ср. "640K ought to be enough for anybody") - размер архива имеет жесткое ограничение в 9.3 гигабайта (десять десятичных цифр в заголовке), а так как используются только 32-битные значения для смещений в файле, то это ограничивает его фактическую величину до чуть более 4 гигабайт (2^32 плюс длина заголовка). Интересно, что на MIPS и IA64 были предусмотрены 64-битные значения, позволяющие использовать все 9+ гигабайт - на старом проприетарном Unix, IRIX. Повторимся, что Linux в некоторых аспектах еще только-только догоняет проприетарные операционные системы, как бы ни утверждали иное некоторые анонимные аналитики, при всем уважении к ним и их радикальному мнению.

Так что если вы заняты в большом C++ проекте, то имейте в виду - современные проекты подошли к пределу возможностей инструментов GCC и binutils и настало время немного их переписать. Lennart?