Голямото компилиране

След доклада, че все още има проблеми в кръпката за премахване на дразнещото ограничение от 1.5G за файлова система в Hurd, запретнах ръкави и едва ли не пренаписах най-основната функция в цялата кръпка -- тази, която реално движи кеша на блоковете. Тъй че вместо да търся повредата в стария код, просто пуснах теста (компилиране на glibc) на новия. Вчера това обаче продължи твърде дълго и оставих компютъра вечерта. За нещастие имало токов удар, така че от ранна сутрин пуснах отново компилирането. Компилирането се проточи към5 часа и накрая микроядрото GNU Mach се паникьоса. Не, стига толкова за днес тестване.

Преминах на дипломната ми работа ext3fs. Просто исках купчината код, която бях написал последните дни, да я направя компилируема. Обаче се оказа, че трябва да използвам най-новия CVS Hurd заради промените в библиотеката за хеш-таблици libihash. Смело почвам да строя пакети (търпеливо изчаквайки един час), инсталирам и всичко забива. (Еквивалентът в Linux е да инсталираш glibc, което забива всички програми.) За щастие могат да се инсталират пакети и под Linux, така че просто инсталирах стария пакет hurd и тръгна. После пак много внимателно повторих операцията по кърпенето на hurd и строенето, и пак същото забиване. Добре, забива още файловата система, но понеже тя си е обикновен процес, реших след поредното възстановяване да пусна пробно ext2fs.static върху нещо. Наистина, заби. Закачих си gdb и почнах аз да се ровя какво става. След няколко начални заблуди, проблемът се оказа прикрит в същата тази нова libihash, заради която изобщо почнах смяната на Hurd-а. Най-просто казано, в един цикъл се използваше i=i++ вместо i=i+1 :-) Така че според настроението на компилатора, понякога всичко е точно, а понякога всичко е безкраен цикъл.

Е, не всичко беше загубено време. Четох повече за systrace на NetBSD, както и за SELinux и за jail-овете на FreeBSD. Получих добра представа и за трите. Systrace е доста примитивен инструмент, но може да свърши доста добра работа. Jail на FreeBSD не ми допадна. Стори ми се просто като усъвършенстван chroot, но systrace прави по-добро впечатление. SELinux е наистина най-тежка категория. Мощно и силно оръжие, с некратка университетска история преди NSA да го прегърнат.

Tags: