|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Timur Khanjanov 2:5020/400 31 Aug 2005 15:00:28 To : Gleb Smirnoff Subject : Re: mpd, pppoe на куче интерфейсов и грабли, присыпанные листьями --------------------------------------------------------------------------------
В письме Wed, 31 Aug 2005 09:33:43 +0000, Gleb Smirnoff
написал:
> Timur Khanjanov <intel@intrans.baku.az> wrote:
> TK> наступил вчера на вот такие грабли
> TK> если завести pppoe через mpd на более чем 64х физических интерфейсах
> TK> то на 65м получаем sigsegv и зависание mpd с полной загрузкой процессора
> TK> и отсутствием реакции на что бы то ни было кроме kill -9
> TK> после копания в исходниках с gdb в зубах обнаружил следуещее
> TK> Массивы содержащие линки и бандлы - динамические и удлиняются через
> TK> функцию LengthenArray
> TK> но в файле pppoe.c видим следующее на 154й строке
> TK> int PppoeIfCount=0;
> TK> struct PppoeIf PppoeIfs[64];
> TK> итак - физические интерфейсы для линков хранятся в _статическом_ массиве
> TK> на 64 элемента
> TK> смотрим дальше
> TK> в функции PppoeNodeUpdate производится его заполнение
> TK> проверка на переполнение массива _не производися_
> TK> в результате на 65м интерфейсе
> TK> вот в этой строке (~830)
> TK> PppoeIfs[PppoeIfCount++].listen=0;
> TK> нолик записывается аккурат в указатель на массив бандлов
> TK> и потом при попытке добавить новый бандл получаем 11й сигнал
> TK> дальше - больше - при приходе сигнала мпд пытается всё закрыть
> TK> опять лезет в массив бандлов опять получает 11й сигнал и так
> TK> пока его не снимут через kill -9
>
> TK> пока прописал там размер массива на 256, но пожалуй там надо
> TK> сделать как в списках бандлов/линков динамический массив и
> TK> увеличение через LenghtenArray
>
> Шлите патчи. :)
как только - так сразу Ж8)
сходу могу только чтоб при превышении лимита матерился
а по уму чтоб сделать - разбиратся надо
--
Homo Homini domini est
--- ifmail v.2.15dev5.3
* Origin: Gamma NNTP server Moscow Russia (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.unix.bsd/101699d4803a0.html, оценка из 5, голосов 10
|