[mythtv-commits] Ticket #11318: Segfault in mythbackend (mainserver/autoexpire?)
MythTV
noreply at mythtv.org
Tue Jan 1 17:15:43 UTC 2013
#11318: Segfault in mythbackend (mainserver/autoexpire?)
--------------------------------+-----------------------------
Reporter: verycoldpenguin@… | Owner: stuartm
Type: Bug Report - Crash | Status: accepted
Priority: minor | Milestone: 0.26.1
Component: MythTV - General | Version: Master Head
Severity: medium | Resolution:
Keywords: | Ticket locked: 0
--------------------------------+-----------------------------
Comment (by verycoldpenguin@…):
By applying the following patch, which is as far as I know more
syntactically correct, then the particular segfault doesn't occur.
{{{
diff --git a/mythtv/programs/mythbackend/mainserver.cpp
b/mythtv/programs/mythbackend/mainserver.cpp
index f38ba4a..fa13dc8 100644
--- a/mythtv/programs/mythbackend/mainserver.cpp
+++ b/mythtv/programs/mythbackend/mainserver.cpp
@@ -4673,20 +4673,21 @@ void
MainServer::GetFilesystemInfos(QList<FileSystemInfo> &fsInfos)
BackendQueryDiskSpace(strlist, false, true);
- QStringList::const_iterator it = strlist.begin();
- while (it != strlist.end())
+ QStringList::const_iterator it = strlist.constBegin();
+
+ while (it != strlist.constEnd())
{
- fsInfo.setHostname(*(it++));
- fsInfo.setPath(*(it++));
- fsInfo.setLocal((*(it++)).toInt() > 0);
+ fsInfo.setHostname(*(it));
+ fsInfo.setPath(*(it));
+ fsInfo.setLocal((*(it)).toInt() > 0);
fsInfo.setFSysID(-1);
- ++it;
- fsInfo.setGroupID((*(it++)).toInt());
- fsInfo.setBlockSize((*(it++)).toInt());
- fsInfo.setTotalSpace((*(it++)).toLongLong());
- fsInfo.setUsedSpace((*(it++)).toLongLong());
+ fsInfo.setGroupID((*(it)).toInt());
+ fsInfo.setBlockSize((*(it)).toInt());
+ fsInfo.setTotalSpace((*(it)).toLongLong());
+ fsInfo.setUsedSpace((*(it)).toLongLong());
fsInfo.setWeight(0);
fsInfos.push_back(fsInfo);
+ ++it;
}
LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, "Determining unique
filesystems");
}}}
However, a similar segfault now occurs at 4589 (void
MainServer::BackendQueryDiskSpace()):
{{{
...
QStringList::const_iterator it = strlist.begin();
while (it != strlist.end())
{
fsInfo.setHostname(*(it++));
fsInfo.setPath(*(it++));
fsInfo.setLocal((*(it++)).toInt() > 0);
fsInfo.setFSysID(-1);
++it; // Without this, the strlist gets out of whack
4589: fsInfo.setGroupID((*(it++)).toInt());
fsInfo.setBlockSize((*(it++)).toInt());
fsInfo.setTotalSpace((*(it++)).toLongLong());
fsInfo.setUsedSpace((*(it++)).toLongLong());
fsInfos.push_back(fsInfo);
}
strlist.clear();
}}}
I don't know git very well, is there any way of finding out who added the
comment at 4588: ++it;? It seems to me a line asking for trouble, but
intentionally added.
--
Ticket URL: <http://code.mythtv.org/trac/ticket/11318#comment:2>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
More information about the mythtv-commits
mailing list