FreeBSD 7.3 - buildworld fail
Dan Lukes
dan at obluda.cz
Mon Nov 22 14:20:50 CET 2010
Peter Rosa napsal/wrote, On 11/22/10 13:37:
> kedze sa blizi EOL FreeBSD 6.4, rad by som ho upgradoval na 7.3. Dvakrat
> som stiahol cely strom /usr/src cez CVSUP a niekolkokrat som sa ho poku-
> sil prelozit. Preklad buildworld vzdy skonci neuspesne v riadku:
> cc -O2 -pipe -DIN_GCC -DHAVE_CONFIG_H
...
> -
> I/usr/obj/usr/src/tmp/legacy/usr/include -c ../cc_tools/insn-attrtab.c
>
> chybou "cc1: out of memory allocating 15133360 bytes", kde sa meni pocet
> bytov, ktore sa snazi alokovat.
>
> Na Gooooogli som nasiel niekolko odkazov na tuto chybu, odporucaju tam
> upravit CFLAGS na -O alebo ich uplne odstranit - nepomohlo a aj tak by
> som nerad prekladal bez optimalizacii...
Zacnu tou optimalizaci - taky jsem nejakou dobu systemy prekladal s
optimalizacemi. Ale nakonec musim rict, ze to nedoporucuji. Rychlost
behu aplikaci se na optimalizovane prekladanem a standardne prekladanem
systemu prakticky nemeni zato se meni rizika.
Aby byl kod optimalizovatelny musi byt respektovana urcita pravidla a to
neni zaruceno.
Precti si
http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/40209
Slo o to, ze optimalizaci indukovana chyba v libc zpusobila, ze awk,
ktere se pouziva na upravu zdrojaku behem "buildworld" nektere upravilo
jinak nez bylo zamysleno - a vysledny system pak nedelal to co ma.
Uz hlavni problem - optimalizaci indukovan achyba - je neco, co se
spatne hleda - ale kdyz se navic projevi az takhle neprimo kdy chyba
zmenial zdrojaky a teprve tato zmena zpusobila navenek pozorovatelny
problem ...
Je to sice hodne stare, ale byla to slusna detektivka a znovu uz nikdy
nic podobneho riskovat nechci.
Vsechno rpekladam s tou optimalizaci, kterou autor kodu predepisuje. A
to nejen u systemu, ael i u portu. Treba lang/java se ma kompilovat
pouze s -O nebo -O2 - a kdyz to zkusis s -O0 (tedy bez optimalizace!),
se zlou se potazes, nebo (nevim, jak to vyupada prave s dnesni verzi,
prinejmensim potazati muzes) ...
Nicmene, zpet k tvemu problemu.
Pri prekladu dojde pamet. To znamena, ze ji je potreba vic, nez ji je k
dispozici.
Tak zaprve muzes omezit spotrebu - to jest vypnutim optimalizaci. -O
NENI "zadna optimalizace" a myslim, ze "default" taky neni bez
optimalizaci. Tudiz mas porad jeste moznost snizit naroky.
Druha strana mince jsou zdroje - bud' dochazi pamet globalne (vcetne
vycerpaneho swapu) coz by se projevilo hlaskou na konzoli. Nebo aplikace
prekracuje povolene maximalni limity nastavene (see 'ulimit -a') nebo
system-compiled-in. Mam dojem, ze i v techto pripadech se to projevi
hlaskou na konzoli.
Nicmene, abych pravdu rekl, ja bych se v tomto pripade nepokousel hledat
pricinu, protoze jde o jednorazovy problem, ktery se da vyresit i bez
jejiho nalezeni.
Jestli to spravne chapu, tak na bezicim 6.4 prekladas zdrojaky od 7.3.
Resenim je - nedelej to. Bud' si vem prelozeny insn-attrtab.o z jineho
systemu, kde uz je 7.3 prelozena na 7.3 nebo se vykasli na cely ten
preklad a upgrade udelej dvoukolove
v prvnim kole udelej binarni upgrade (tedy pomoci hotoveho instalacniho
CD 7.3-R nebo po siti), tim ziskas funkcni 7.3-R - a teprve na ni si
pripadne preloz system ze svych zdrojaku.
> Prosim, riesili a vyriesili ste niekto tento problem? Ako?
Tak jak jsme popsal - nejprve binarni upgrade na standardni 7.3-R a v
druhem kole preklad vlastnich zdrojaku.
Dan
More information about the Users-l
mailing list