gpt4 book ai didi

c++ - Live555 RTSPServer 对象销毁不当或库错误?

转载 作者:行者123 更新时间:2023-11-30 02:38:14 26 4
gpt4 key购买 nike

我在销毁 RTSPServer 对象时遇到问题:应用程序因 SIGSEGV 错误而崩溃。但是只有在我不接触所有其他对象的情况下,RTSPServer 对象才可能被销毁。这是库错误还是我做错了什么?

他们最近 live555 changelog说:

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

响应文本:

I have a problem using Medium::close() in my destructor when deleting an RTSPServer object after I have already deleted ServerMediaSession* objects vector (of course, using Medium::close() too).

首先,请确保您使用的是最新版本的软件 (与删除 RTSPServer 的相关的错误已在版本中修复 2015.06.24).

其次,请注意,一旦您添加了 ServerMediaSession 反对 RTSPServer,您必须删除 ServerMediaSession 对象通过调用 Medium::close()。反而, 你必须使用 GenericMediaServer::deleteServerMediaSession() (GenericMediaServerRTSPServer 的基类),因此 RTSPServer 被告知 ServerMediaSession 对象正在 已删除。

不过,最后请注意,您不需要删除 ServerMediaSession 对象之前删除 RTSPServer,因为 RTSPServer 析构函数将自动删除任何 ServerMediaSession(以及 ClientConnectionClientSession) 它管理的对象。相反,您可以调用 Medium::close() 在您的 RTSPServer 对象上。

罗斯·芬利森, Live Networks, Inc., http://www.live555.com/

关于c++ - Live555 RTSPServer 对象销毁不当或库错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com