LINUX.ORG.RU

Утечка памяти при работе с live555

 ,


0

1

Здравствуйте.

Делаю приложение под linux с использованием библиотеки live555. В приложении необходимо воспроизводить видеопотоки с камер. Мой код плеера передран из примера - тестовой программы:

int playstream(char** argv)

eventLoopWatchVariable = 0;
TaskScheduler* scheduler = BasicTaskScheduler::createNew();
UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);

RTSPClient * rtspClient = openURL(*env, argv[0], argv[1]);
 env->taskScheduler().doEventLoop(&eventLoopWatchVariable);
TeardownSession(rtspClient);

env->reclaim();
delete scheduler; 
return 0;

}

После каждого сеанса память утекает. Видимо, связано с тем, что rtspClient каждый раз создается, но никогда не удаляется. На форумах нашел совет по этому поводу, после TeardownSession вызвать Medium::close(client->rtspClient); Но, видимо, совет относится к каким-то старым версиям live555. В текущей никакого client’а нет.

Есть ли у кого-нибудь опыт? Куда копать?



Последнее исправление: hobbit (всего исправлений: 6)
Ответ на: комментарий от gagarin0

Да пробовал уже.

Получил

Fault address: 0xb5500218 Access to this address is not allowed. /————— backtrace (2 frame(s): ./my_app(handler+0x3d)[0x1c536] /lib/libc.so.6(__default_rt_sa_restorer+0x0)[0xb6b37890] Segmentation fault

Видимо, придется лезть в потроха этого RTSPClient’ а и освобождать вручную. Или вовсе от live555 отказываться.

r702
() автор топика
Ответ на: комментарий от ox55ff

Уже разобрался.

В обработчике входного кадра live555 в момент вызова Medium::close(rtspClient) из моего коллбэка было не выйдено. Если выйти, и больше не давать заходить, то Medium::close(rtspClient) срабатывает без ошибок.

Всем спасибо!

r702
() автор топика
Ответ на: комментарий от r702

Отметь тему как решённую тогда.

Ещё бы кто предложил универсальное решение для их Address already in use… А то даже всё принудительно покилляв (что тоже не есть правильно), приходится ждать перед повторным запуском. И если не дождаться, то повторно придётся ждать дольше.

Понятно, что медиа- и прокси-сервер у live555 предлагаются исключительно как учебные образцы и надо писать свои – но при написании своих тоже надо от чего-то отталкиваться.

Ну да ладно, это тема отдельная.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария