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