[mythtv] Backend segfaulting repeatedly during recording DVB

Ed Wildgoose lists at wildgooses.com
Wed Feb 23 00:55:31 UTC 2005


Hi folks, I have been trying to debug this for a few days now, but I'm 
just not getting anywhere.  From a perfectly fine cvs from around mid 
Jan, I now get segfaults extremely frequently and usually when the 
backend is recording something.  The segfaults are really wierd though 
and I suspect some subtle memory overflow somewhere which is trampling a 
variable.  I have run the backend through valgrind, but nothing is 
showing up particularly (although I don't really know how to use 
valgrind that well)...  I have rebuilt QT and glibc a few times to check 
there isn't something fishy going on there (although it was working fine 
before, so nothing suspected).

[Versions: QT: 3.3.3 Glibc:

The consistent places where it segfaults are two locations.  It's always 
these two locations, and the relevant lines involve definitely allocated 
strings, yet the bt suggests NULL values being passed...

Abreviated backtraces shown below, full backtraces available (didn't 
seem necessary to me):

Any ideas *please*...?

Ed W


Thread 13 (Thread -1331709008 (LWP 17856)):
#0  0xb68b105a in _int_malloc () from /lib/libc.so.6
No symbol table info available.
#1  0xb68b0470 in malloc () from /lib/libc.so.6
No symbol table info available.
#2  0xb6a17427 in operator new () from 
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#3  0xb6f77576 in QString::QString () from /usr/qt/3/lib/libqt-mt.so.3
No symbol table info available.
#4  0xb73e356a in MythContext::KickDatabase (db=0x80d3a60) at 
mythcontext.cpp:1250
        query = {static null = {static null = <same as static member of 
an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0xb70e7518, static shared_null 
= 0x80c0070}

#5  0xb73e40a4 in MythContext::GetSetting (this=0x80d1e40, 
key=@0xb09fb950, defaultval=@0xb09fb630)
    at mythcontext.cpp:1349
        query = {static null = {static null = <same as static member of 
an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x14, static shared_null = 
0x80c0070}
        result = <incomplete type>
        found = false
        value = {static null = {static null = <same as static member of 
an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x80c0070, static shared_null = 
0x80c0070}
#6  0xb73e46f6 in MythContext::GetNumSetting (this=0x80d1e40, 
key=@0xb09fb950, defaultval=3) at mythcontext.cpp:1388
        val = {static null = {static null = <same as static member of an 
already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x814e75f, static shared_null = 
0x80c0070}
        retval = {static null = {static null = <same as static member of 
an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x0, static shared_null = 
0x80c0070}
#7  0xb7cd35a8 in JobQueue::ProcessQueue (this=0x8104a20) at 
jobqueue.cpp:182
        delquery = {<> = {<No data fields>}, <No data fields>}
        query = {<> = {<No data fields>}, <No data fields>}
        chanid = {static null = {static null = <same as static member of 
an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x80c0070, static shared_null = 
0x80c0070}
---Type <return> to continue, or q <return> to quit---
        starttime = {d = {jd = 0}, t = {ds = 0}}
        startts = {static null = {static null = <same as static member 
of an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x80c0070, static shared_null = 
0x80c0070}
        type = 0
        id = 0
        cmds = 0
        flags = 0
        status = 0
        hostname = {static null = {static null = <same as static member 
of an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x80c0070, static shared_null = 
0x80c0070}
        sleepTime = 30
        job = {sh = 0xb2a005b8}
        jobType = {sh = 0xb2a00548}
        jobStatus = {sh = 0xb2a00508}
        maxJobs = 3
        message = {static null = {static null = <same as static member 
of an already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x80c0070, static shared_null = 
0x80c0070}
        jobs = {sh = 0xb2a02fd8}
        atMax = false
#8  0xb7cd32be in JobQueue::RunQueueProcesser (this=0x8104a20) at 
jobqueue.cpp:143
No locals.

#9  0xb7cd32e7 in JobQueue::QueueProcesserThread (param=0x8104a20) at 
jobqueue.cpp:149
        jobqueue = (JobQueue *) 0x8104a20
#10 0xb6a447e1 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#11 0xb69006da in clone () from /lib/libc.so.6
No symbol table info available.


And



Thread 3 (Thread -1245860944 (LWP 19357)):
#0  0xb68b05a8 in free () from /lib/libc.so.6
No symbol table info available.
#1  0xb6a16003 in operator delete () from 
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#2  0xb6a16057 in operator delete[] () from 
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#3  0xb6f778c0 in QStringData::deleteSelf () from 
/usr/qt/3/lib/libqt-mt.so.3
No symbol table info available.
#4  0x0805a3f7 in ~QString (this=0xb5bdaa40) at qstring.h:848
No locals.
#5  0xb7de89e8 in DVBSignalMonitor::MonitorLoop (this=0x80fe8e0) at 
dvbsignalmonitor.cpp:80
        str = {static null = {static null = <same as static member of an 
already seen type>, d = 0x80c0070,
    static shared_null = 0x80c0070}, d = 0x80c3340, static shared_null = 
0x80c0070}
        stats = {snr = 65278, ss = 50886, ber = 0, ub = 0, status = 31}
        PrevLockedState = true
#6  0xb7de8c1d in DVBSignalMonitor::SpawnMonitorLoop (self=0x80fe8e0) at 
dvbsignalmonitor.cpp:92
No locals.
#7  0xb6a447e1 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#8  0xb69006da in clone () from /lib/libc.so.6
No symbol table info available.



More information about the mythtv-dev mailing list