簡體   English   中英

Live555 RTSPServer對象銷毀不當還是庫bug?

[英]Live555 RTSPServer object destroyed improperly or the library bug?

我在銷毀RTSPServer對象時遇到問題:應用程序崩潰並出現SIGSEGV錯誤。 但是,如果我不觸及所有其他對象,則可能僅銷毀RTSPServer對象。 這是庫錯誤還是我做錯了什么?

他們最近的live555更改日志說:

2015.05.12:
- Updated the previous revision to change the order in which fields are deleted 
  in the "RTSPServer" destructor, to avoid a possible crash if "RTSPServer" 
  objects are deleted. (Thanks to ChaSeop Im for noting the problem.)

這是我的析構函數:

RTSPServerH264::~RTSPServerH264()
{
    LOG(INFO) << "RTSP server close: destroying objects";

    if (mSms.size() > 0)
    {
        LOG(INFO) << "destroying: Server Media Subsession vector";
        for (ServerMediaSession* s : mSms)
        {
            s->deleteAllSubsessions();
            Medium::close(s);
        }
        mSms.clear();
        mLiveSubsession.clear();
    }

    if (mRTSPServer)
    {
        LOG(INFO) << "destroying: RTSPServer";
        // BUG: Destroying RTSPServer object crashes the whole application!
        Medium::close(mRTSPServer);
    }

    if (mUsageEnvironment)
    {
        LOG(INFO) << "destroying: Usage Environment";
        mUsageEnvironment->reclaim();
    }

    if (mTaskScheduler)
    {
        LOG(INFO) << "destroying: Task Scheduler";
        delete mTaskScheduler;
    }
}

現在可以在這里找到我的問題的答案: http//lists.live555.com/pipermail/live-devel/2015-June/019490.html

回復文字:

在我已經刪除了ServerMediaSession*對象向量(當然,也使用Medium::close() )之后刪除RTSPServer對象時,我在析構函數中使用Medium::close()RTSPServer

首先,請確保您使用的是最新版本的軟件(在2015.06.24版中修復了與刪除RTSPServer's相關的錯誤)。

其次,請注意,一旦將ServerMediaSession對象添加到RTSPServer ,就不能通過調用Medium::close()刪除ServerMediaSession對象。 相反,你必須使用GenericMediaServer::deleteServerMediaSession() GenericMediaServer是基類的RTSPServer ),從而使RTSPServer被告知ServerMediaSession對象被刪除。

最后,但是,請注意,您不必刪除ServerMediaSession對象在刪除之前RTSPServer ,因為RTSPServer析構函數將自動刪除任何ServerMediaSession (和ClientConnectionClientSession )對象所管理。 相反,您可以在RTSPServer對象上調用Medium::close()

Ross Finlayson,Live Networks,Inc。, http://www.live555.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM