最近使用Live555遇到一个堆栈溢出问题,各位可能也会遇到,写出来分享一下;
应用场景如下图所示:
Mediaserver是基于live555的一个流媒体服务器,负责解析platform送过来的码流,并建立RTSP服务;decoder向mediaserver发送RTSP请求,收到码流后再进行处理;
现在的情况是mediaserver有概率会出现堆栈溢出,通过日志分析,堆栈溢出时platform没有送码流,而decoder仍然不断向mediaserver发送RTSP请求;根据崩溃dump中显示的堆栈调用层次,走读代码并画出程序处理流程图如下:
乍一看这个流程图可能会有点晕,不捉急,先来回顾一下live555框架设计的基本思想;
1) live555框架是单线程结构,所有任务都是单线程执行;
2) live555所有任务都会在doE