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