pppd: Can't execute /etc/ppp/ip-up: Argument list too long (jakz-takz vyreseno)

David Trcka trcka na poda.cz
Sobota Prosinec 2 13:50:32 CET 2000


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sun, 5 Nov 2000, Pavel Kankovsky wrote:

> On Wed, 1 Nov 2000, David Trcka wrote:
> 
> > Jednou za cas se mi ale stane, ze po navazani spojeni se vypise do logu
> > hlaska 'pppd[pid]: Can't execute /etc/ppp/ip-up: Argument list too long' a
> > prislusne subnety se nenaroutuji.
> 
> To je zajimave. To bych chapal tak, jako ze execve() vratilo chybu E2BIG,
> coz by ale znamenalo, ze zadany seznam argumentu a environment je vetsi
> nez asi 1 MB (nebo kolik ten limit na Linuxu je). A nebo jeste mozna jadru
> obcas dojde pamet a trochu zmatecne zahlasi tohle.
> 
> > Toto se stava (podle meho soudu) naprosto nedeterministicky.
> 
> To by podporovalo teorii, ze obcas dojde pamet.
> 
> > Dokazu to umyslne vyvolat jedine tak, ze za behu pppd zmenim obsah
> > skriptu ip-up a pak shodim a nahodim linku, jenomze v beznem provozu
> > se ip-up nemeni.
> 
> ...a tohle zase ne?! Nicmene bych zkontroloval, jestli je dost volne
> pameti (resp. swapu) a dalsich prostredku a postval na pppd strace (-f),
> abych zkontroloval, jestli to doopravdy pada tam, kde si myslim (duveruj,
> ale proveruj <g>).
> 
Uz to vypadalo, ze jsem se na to vykaslal, ale ne.

Odhalovani chyby bylo trosku slozitejsi, nez se zda, protoze vsechny tyhle
ppp demony bezi na disketovych routerech vlastni vyroby, takze veskere
binarky jsou stripnute, strace neni k dispozici a vubec mam dost omezene
moznosti. Nakonec se mi ale povedlo chytnout situaci, kdy takhle
zastavkovalo nekolik ppp demonu soucasne a v tom okamziku opravdu free
hlasilo jen par kilo volne RAM.

Potvrdilo to muj predchozi poznatek o mirne nahnilosti neceho v ppp, ktera
zpusobuje jeho neustale pametove bobtnani. O hodne markantnejsi je to v
ppp verze 2.4. Tuto skutecnost jsem uz oznamoval i do LKML i autorum PPP
kodu, zatim nemam zadnou odpoved.

Zajimave je, ze vypis ps neukazuje, ze by pppd zabiral vic pameti nez je
obvykle, proste se pamet ztraci nekam do neznama (typicky memory-leak).
Chyba se ale projevuje pouze, kdyz pppd bezi nonstop (muj pripad),
napriklad zadanim persist a maxfail 0 do /etc/ppp/options. Pozoruhodne je,
ze na rozdil od jinych memory-leaku, kdy proste pamet dojde a basta, tady
se to jednoduse vyresi tim, ze se pppd ukonci a spusti znova. Ejhle, pamet
je najednou zpatky. Tipuju z toho nejaky problem spise v ppp modulu jadra
nez v ppp demonu.

Rad bych se tim zabyval hloubeji, jenomze tohle vsechno je 'production
environment' a nemuzu si dovolit s tim experimentovat.

Takze reseni je jednoduche. Nepouzivat direktivy persist a maxfail a misto
toho spoustet pppd pomoci initu (nastavit v /etc/inittab). Jakmile lehne
na chvili linka, pppd zdechne, init ho pusti znova a vsichni jsou happy.
Bohuzel to neodstranuje pricinu, ale nasledek, vice s tim ale nenadelam.

__________________________________________
    David Trcka, network administrator
  PODA s.r.o., Internet Service Provider
Ostrava, 28. rijna 150, The Czech Republic
        Voice/Fax: +420 69 6612600
        PGP KeyID: DAE55DA4

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE6KPAa5z9w2trlXaQRAqFKAKD4ID4oRmRpxG4qJjPZwR6Vlki13ACcDU3t
Hq96uqBi+KBaUXHjivoqjfQ=
=iXC7
-----END PGP SIGNATURE-----



Další informace o konferenci Linux