mail + Out of memory
Dan Lukes
dan at obluda.cz
Fri Jun 13 17:18:56 CEST 2003
Josef Jursa wrote:
> pri rozesilani posty na lokalnim stroji ze skriptu
> /usr/bin/mail -s "Predmet sdeleni" uzivatel << KONEC
>
> $MSG1
>
> $MSG2
> $MSG3
> KONEC
>
> ve 4.8_RELEASE se mne obcas objevuje chybove hlaseni:
>
>
> mail in malloc(): warning: recursive call
> mail: Out of memory: Inappropriate ioctl for device
>
> Totez spusteno o chvili pozdeji probehne bez problemu. Volne pameti je
> pritom cca 800MB.
>
> K odesilani posty pouzivame sendmail +MILTER, mimedefang, RAV.
>
> Napada nekoho, kde je problem? Jadro bylo uprovovano pouze standardnim
> zpusobem napr. pridani IPFW, ...
Hlaseni "recursive call" vydavaji funkce malloc, free a realloc tehdy,
kdyz se ukaze, ze dochazi ke druhemu vstupu do teto skupiny funkci -
drive, ne dobehl vstup prvni.
To se normalne nemuze stat - ostatni thready (je-li aplikace
multithreadova) jsou po dobu vykonavani techto funkci pozastaveny a
funkce samy nenabizeji zadnou moznost call-backu do volajici aplikace.
Jedinou moznosti jak k tomuto jevu muze dojit je tedy situace, kdy
dojde behem provadeni techto funkci k preruseni vlivem prichodu signalu
a v ramci rutiny ktera ho zpracovava dojde k (druhemu) volani funkce
teto skupiny (See sigaction(2) for a list of functions that are
considered safe for use in signal handlers.).
Vadne tedy mohou byt obsluzne funkce obsazene v 'mail' (tedy brokpipe,
sigint, collint, collhup, collstop, saveint, savehup, savetstp,
savettou, savettin, intr, stop, hangup, ttyint, ttystop - nezarucuji ani
spravnost ani uplnost uvedeneho seznamu), vadne mohou ale take byt
defaultni obsluzne funkce obsazene v libc a nakonec, vadna muze byt
nejmene jedna knihovni funkce uvedena v seznamu "bezpecnych" provadejici
akce, ktere nejsou v ramci handleru povoleny.
Nemam cas provest hloubejsi analyzu - ale prvni funkce, do ktere jsme
nahledl, tedy 'brokpipe' obsahuje volani 'longjmp', kterou na seznamu
"bezpecnych" funkci nevidim.
Zrejme nebude kod 'mail' uplne v poradku ...
Dan
More information about the Users-l
mailing list