[mythtv] [Patch] Re: [BUG?] Threading / Sockets problem with
master and slave backends
Jake
mythtv at jake.ath.cx
Wed Sep 14 13:21:01 UTC 2005
Hi all,
I think I have same threading lock issue but on function "void
MainServer::customEvent(QCustomEvent *e)" from mythbackend.
The crash happens when I try to use mythweb or another frontend to get a
list of records while backend is recording something.
Do you think we can use similar "fix" or we need another solution?
Here is a stack at crash time and attached you can find full stack from
all threads:
#0 0xb6beba04 in QMutex::lock () from /usr/qt/3/lib/libqt-mt.so.3
#1 0x08092b9a in RefSocket::Lock (this=0xb2f10250) at server.h:22
#2 0x08072069 in MainServer::customEvent (this=0xb2f005c0, e=0x812c800)
at mainserver.cpp:545
pbs = (PlaybackSock *) 0x8115678
sock = (RefSocket *) 0xb2f10250
sendGlobal = false
sentSet = {<QGList> = {<> = {<No data fields>}, firstNode =
0xb2f02430, lastNode = 0xb2f02430,
curNode = 0xb2f02430, curIndex = 0, numNodes = 1, iterators = 0x0},
<No data fields>}
iter = {<std::iterator<std::random_access_iterator_tag,
PlaybackSock*, int, PlaybackSock**, PlaybackSock*&>> = {<No data
fields>}, _M_current = 0x80e50b8}
broadcast = {<QValueList<QString>> = {sh = 0xb2f36f40}, <No data
fields>}
sendstuff = true
#3 0xb6964efd in QObject::event () from /usr/qt/3/lib/libqt-mt.so.3
#4 0xb690f874 in QApplication::internalNotify () from
/usr/qt/3/lib/libqt-mt.so.3
#5 0xb690ec2a in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3
#6 0xb6910581 in QApplication::sendPostedEvents () from
/usr/qt/3/lib/libqt-mt.so.3
#7 0xb6910418 in QApplication::sendPostedEvents () from
/usr/qt/3/lib/libqt-mt.so.3
#8 0xb68bc302 in QEventLoop::processEvents () from
/usr/qt/3/lib/libqt-mt.so.3
#9 0xb6920d0c in QEventLoop::enterLoop () from /usr/qt/3/lib/libqt-mt.so.3
#10 0xb6920bce in QEventLoop::exec () from /usr/qt/3/lib/libqt-mt.so.3
Thanks,
Jake
Malc wrote:
> Malcolm Smith wrote:
>
>> Hi all,
>>
>>
>> Threading problems
>>
>> I think there may be problems with Sockets or threads. (See attached
>> bt).
>>
>> I can reliably reproduce this problem.
>>
>> Setup
>> Master Backend / Slave backend both in idle state. This only fails
>> when a live slave backend in idle state is present
>>
>> Method:
>> Open 2 browsers and request status simultaneously. The thread on the
>> master backend handling status / web crashes, recording continues on
>> both backend will remain in this state until killed. There is never
>> any further response from the status port 6544/6543. (Sometimes it
>> takes a few tries, so it's something to do with collision timing).
>>
>> It can also be reproduced when requesting multiple activities via
>> mythweb that take time to process (rescheds, status, deletes), but
>> only ever when slave backend is present.
>>
>> For background master has DVB, slave has DVB and PVR250 card. Master
>> server also has mysql running on it.
>> Both backends are built from SVN from Weds 31 Aug, identical
>> distributions.
>>
>> back trace attached
>>
>> Because of this the WAF is dropping, as she's impatient on the
>> web.... help please.
>>
>>
>> Thread 12 (Thread 31009712 (LWP 4318)):
>> #0 0x001cf7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
>> #1 0x02b9c7f6 in __nanosleep_nocancel () from /lib/tls/libc.so.6
>> #2 0x02bcad6a in usleep () from /lib/tls/libc.so.6
>> #3 0x007dbcaa in EITScanner::RunEventLoop (this=0x8109d90)
>> at eitscanner.cpp:62
>> #4 0x007dbc6f in EITScanner::SpawnEventLoop (param=0x8109d90)
>> at eitscanner.cpp:50
>> #5 0x0018e98c in start_thread () from /lib/tls/libpthread.so.0
>> #6 0x02bd17da in clone () from /lib/tls/libc.so.6
>>
>> Thread 11 (Thread 129358768 (LWP 4439)):
>> #0 0x001cf7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
>> #1 0x02b9c7f6 in __nanosleep_nocancel () from /lib/tls/libc.so.6
>> #2 0x02bcad6a in usleep () from /lib/tls/libc.so.6
>> #3 0x006c9364 in TVRec::RunTV (this=0x8101af0) at tv_rec.cpp:1612
>> #4 0x006c8dd9 in TVRec::EventThread (param=0x8101af0) at
>> tv_rec.cpp:1534
>> #5 0x0018e98c in start_thread () from /lib/tls/libpthread.so.0
>> #6 0x02bd17da in clone () from /lib/tls/libc.so.6
>>
>> Thread 10 (Thread 98745264 (LWP 4441)):
>> #0 0x001cf7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
>> #1 0x00193eee in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0
>> #2 0x00190df4 in _L_mutex_lock_29 () from /lib/tls/libpthread.so.0
>> #3 0xf6e00010 in ?? ()
>> #4 0xf6f48cf8 in ?? ()
>> #5 0x070d5214 in ?? () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
>> #6 0x00a76ee0 in ?? ()
>> #7 0x080ef278 in ?? ()
>> #8 0x05e2b5f8 in ?? ()
>> #9 0x06f972f0 in QRecursiveMutexPrivate::lock ()
>> from /usr/lib/qt-3.3/lib/libqt-mt.so.3 Previous frame identical to
>> this frame (corrupt stack?)
>>
>>
>>
>>
> I've spent some time tracking through the code.
>
> I think I'm getting somewhere with this. This problem only seems to be
> common in the following circumstances (but will occur in other
> circumstances).
>
> Master backend is acting as a middleware (i.e. a backend to a client
> and client to slave backends/mysql). Examples of this are:
> 1. Requesting status (localhost:6545) with slave backends available
> from a web browser
> 2. Requesting sql and file activity from a frontend or browser, esp
> when slave backends are present
>
> The critical bit of code seems to be:
> - programs/mythbackend/playbacksock.cpp
>
> bool PlaybackSock::SendReceiveStringList(QStringList &strlist)
> {
> sock->Lock();
>
> ......
>
> Thread will hang at sock->Lock and never return.
>
> I've attached a patch which does fix the problem, but does make the
> code more stable, by not getting stuck on the lock.
> What the patch does is to use tryLock to see if the lock can be
> obtained. If not, it tries once every 0.1s for 20 times. If not lock
> after that, then it aborts the SendReceive.
>
> This means whatever the calling code was trying to get done (e.g.
> schedule, delete etc) doesn't get done.... It wouldn't have anyway..
> and would have required a restart of the masterbackend! I can't think
> of any critical activity on myth that requires critical confirmation
> and execution only once. e.g. if delete didn't work then just retry..
> frustrating but less so than a restart.
>
> Can people try this patch, see whether it inceases stability for them?
> I've had no lockups using this code.
>
> Obviously the long term solution is to fix the problem. I'm happy to
> help discuss this problem.
>
>
> More on the problem... looking at the activity
>
> Case 1 - This is a standard activity
> Client MasterBackend Slave backend
>
> 1 Req->
> 1 Process
> Sendreceive Lock
> 1 Req ->
> -> 1Receive req
> 1 SlaveProcess
> <- 1 Response
> 1 Response <-
> Sendreceive unlock
> <- 1 Response
>
> In the case where two requests are made quickly in a row this seems to
> be happening. (e.g. requesting status from 2 different browsers within
> a second or so of each other)
> Case 2 - failure
>
> Client MasterBackend Slave backend
>
> 1 Req->
> 1 Process
> 1 Sendreceive Lock
> 1 Req ->
> -> 1Receive req
> 1 SlaveProcess
> (in this case slave process takes time... maybe swapping or processing)
> 2 Req ->
> (new req arrives)
> 2 Process
> 2 SendreceiveLock (In
> some cases this seems to fail, rather than waiting to come free)
> <- 1 Response (If
> this response is never sent, or gets lost then thread is forever locked)
-------------- next part --------------
(gdb) thread apply all bt full
Thread 17 (Thread -1362138192 (LWP 28869)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb65b1b3d in poll () from /lib/tls/libc.so.6
#2 0xb7c96063 in DVBRecorder::StartRecording (this=0x8107628) at dvbrecorder.cpp:580
ret = 1
cardnum = 0
polls = {fd = 21, events = 1, revents = 0}
#3 0xb7c3df46 in SpawnEncode (param=0x8107650) at tv_rec.cpp:48
nvr = (class RecorderBase *) 0x8107650
#4 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#5 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 16 (Thread -1353745488 (LWP 28868)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb658c116 in nanosleep () from /lib/tls/libc.so.6
#2 0xb65b4740 in usleep () from /lib/tls/libc.so.6
#3 0xb7ad9ff7 in ThreadedFileWriter::DiskLoop (this=0x80ed9b8) at RingBuffer.cpp:276
size = 221464
written = 264140
timer = {ds = 31978919}
#4 0xb7ad95d1 in ThreadedFileWriter::boot_writer (wotsit=0x80ed9b8) at RingBuffer.cpp:120
fw = (ThreadedFileWriter *) 0x80ed9b8
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 15 (Thread -1343251536 (LWP 28865)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb65b1b3d in poll () from /lib/tls/libc.so.6
#2 0xb7cd4536 in DVBSIParser::StartSectionReader (this=0x8101590) at dvbsiparser.cpp:241
ret = 1
buffer = "Ëð\221\000\001é\000\000\000\003À\b0RÓMÀ\a\b\030\001eng\001\000\000\020Home Improvementð\n\201\b\b8\005ÿ\037\000\000\000À\t0RÚUÀ\025\030\030\001eng\001\000\000\020Paid Programmingð\n\201\b\b8\005ÿ\037\000\000\000À\n0RïmÀ\016\020\024\001eng\001\000\000\fMaury Povichð\n\201\b\b8\005ÿ\037\000\000\000\fÑ°!eng\001\000\000\017Judge Joe Brownð\n\201\b\b8\005ÿ\037\000\000\000Á\0220SJÕÀ\a\b\025\001eng\001\000\000\r"...
processed = false
#3 0xb7ca080f in DVBChannel::SpawnSectionReader (param=0x8101590) at dvbchannel.cpp:93
siparser = (class DVBSIParser *) 0x8101590
#4 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#5 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 14 (Thread -1334858832 (LWP 28864)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7021956 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#2 0xb6bec3cd in QWaitCondition::wait () from /usr/qt/3/lib/libqt-mt.so.3
#3 0x08095807 in ProcessRequestThread::run (this=0xb2f00da0) at mainserver.cpp:69
#4 0xb6903669 in QThreadInstance::start () from /usr/qt/3/lib/libqt-mt.so.3
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 13 (Thread -1326466128 (LWP 28863)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7021956 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#2 0xb6bec3cd in QWaitCondition::wait () from /usr/qt/3/lib/libqt-mt.so.3
#3 0x08095807 in ProcessRequestThread::run (this=0xb2f00c58) at mainserver.cpp:69
#4 0xb6903669 in QThreadInstance::start () from /usr/qt/3/lib/libqt-mt.so.3
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 12 (Thread -1318073424 (LWP 28862)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7021956 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#2 0xb6bec3cd in QWaitCondition::wait () from /usr/qt/3/lib/libqt-mt.so.3
#3 0x08095807 in ProcessRequestThread::run (this=0xb2f00b10) at mainserver.cpp:69
#4 0xb6903669 in QThreadInstance::start () from /usr/qt/3/lib/libqt-mt.so.3
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 11 (Thread -1309680720 (LWP 28861)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7021956 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#2 0xb6bec3cd in QWaitCondition::wait () from /usr/qt/3/lib/libqt-mt.so.3
#3 0x08095807 in ProcessRequestThread::run (this=0xb2f009c0) at mainserver.cpp:69
#4 0xb6903669 in QThreadInstance::start () from /usr/qt/3/lib/libqt-mt.so.3
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 10 (Thread -1301288016 (LWP 28860)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7021956 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#2 0xb6bec3cd in QWaitCondition::wait () from /usr/qt/3/lib/libqt-mt.so.3
#3 0x08095807 in ProcessRequestThread::run (this=0xb2f006a8) at mainserver.cpp:69
#4 0xb6903669 in QThreadInstance::start () from /usr/qt/3/lib/libqt-mt.so.3
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 9 (Thread -1292895312 (LWP 28859)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb658c116 in nanosleep () from /lib/tls/libc.so.6
#2 0xb658bf15 in sleep () from /lib/tls/libc.so.6
#3 0xb7c0aebe in JobQueue::ProcessQueue (this=0x80f8ef8) at jobqueue.cpp:469
chanid = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80cc070, static shared_null = 0x80cc070}
starttime = {d = {jd = 0}, t = {ds = 0}}
startts = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80cc070, static shared_null = 0x80cc070}
type = 0
id = 0
cmds = 1
flags = 1
status = 0
hostname = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80cc070, static shared_null = 0x80cc070}
sleepTime = 60
jobStatus = {sh = 0x8101ed0}
maxJobs = 1
queueStartTimeStr = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x812bce8, static shared_null = 0x80cc070}
queueEndTimeStr = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x812ead0, static shared_null = 0x80cc070}
queueStartTime = 0
queueEndTime = 0
curQTime = {ds = 0}
curTime = -1292897364
message = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80cc070, static shared_null = 0x80cc070}
tmpStr = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80cc070, static shared_null = 0x80cc070}
jobs = {sh = 0x80fd218}
atMax = false
inTimeWindow = true
startedJobAlready = false
#4 0xb7c063c2 in JobQueue::RunQueueProcesser (this=0x80f8ef8) at jobqueue.cpp:135
#5 0xb7c063eb in JobQueue::QueueProcesserThread (param=0x80f8ef8) at jobqueue.cpp:141
jobqueue = (JobQueue *) 0x80f8ef8
#6 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#7 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 8 (Thread -1282663504 (LWP 28858)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb658c116 in nanosleep () from /lib/tls/libc.so.6
#2 0xb658bf15 in sleep () from /lib/tls/libc.so.6
#3 0x080af4b6 in HouseKeeper::RunHouseKeeping (this=0x80fd670) at housekeeper.cpp:175
period = 1
maxhr = 23
minhr = 22
dbTag = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x81019b0, static shared_null = 0x80cc070}
#4 0x080affe9 in HouseKeeper::doHouseKeepingThread (param=0x80fd670) at housekeeper.cpp:236
hkeeper = (HouseKeeper *) 0x80fd670
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 7 (Thread -1274270800 (LWP 28857)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb658c116 in nanosleep () from /lib/tls/libc.so.6
#2 0xb658bf15 in sleep () from /lib/tls/libc.so.6
#3 0x08057923 in AutoExpire::RunExpirer (this=0x8102da8) at autoexpire.cpp:158
statbuf = {f_type = 61267, f_bsize = 4096, f_blocks = 19164872, f_bfree = 7126077, f_bavail = 6152538,
f_files = 9748480, f_ffree = 8909432, f_fsid = {__val = {0, 0}}, f_namelen = 255, f_frsize = 4096, f_spare = {0, 0, 0, 0,
0}}
freespace = 23
minFree = 0
recordfileprefix = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80f2140, static shared_null = 0x80cc070}
#4 0x08057e65 in AutoExpire::ExpirerThread (param=0x8102da8) at autoexpire.cpp:200
expirer = (AutoExpire *) 0x8102da8
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 6 (Thread -1265878096 (LWP 28856)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb702409b in __read_nocancel () from /lib/tls/libpthread.so.0
#2 0xb62e16af in vio_read () from /usr/lib/libmysqlclient.so.12
#3 0x00000008 in ?? ()
#4 0x08102e38 in ?? ()
#5 0x00000004 in ?? ()
#6 0xb62e2cba in net_write_command () from /usr/lib/libmysqlclient.so.12
#7 0xb2f09b38 in ?? ()
#8 0xb62e6288 in ?? () from /usr/lib/libmysqlclient.so.12
#9 0xb62e3215 in net_real_write () from /usr/lib/libmysqlclient.so.12
#10 0xffffffff in ?? ()
#11 0x00000000 in ?? ()
#12 0x00000000 in ?? ()
#13 0xb62e2a25 in net_clear () from /usr/lib/libmysqlclient.so.12
#14 0x00000000 in ?? ()
#15 0xb62e3527 in my_net_read () from /usr/lib/libmysqlclient.so.12
#16 0x08102308 in ?? ()
#17 0x00000003 in ?? ()
#18 0x00000000 in ?? ()
#19 0xb62e6288 in ?? () from /usr/lib/libmysqlclient.so.12
#20 0x08102308 in ?? ()
#21 0x00000000 in ?? ()
#22 0x00000000 in ?? ()
#23 0xb62cb0f3 in net_safe_read () from /usr/lib/libmysqlclient.so.12
#24 0x08102308 in ?? ()
#25 0x00000000 in ?? ()
#26 0x012cb21e in ?? ()
#27 0xb62e6288 in ?? () from /usr/lib/libmysqlclient.so.12
#28 0x08102308 in ?? ()
#29 0x08102308 in ?? ()
#30 0xb48c2f48 in ?? ()
#31 0xb62ce279 in mysql_read_query_result () from /usr/lib/libmysqlclient.so.12
#32 0x00000001 in ?? ()
#33 0x00000021 in ?? ()
#34 0xb62ce25e in mysql_read_query_result () from /usr/lib/libmysqlclient.so.12
#35 0xb62ce44c in mysql_real_query () from /usr/lib/libmysqlclient.so.12
#36 0x08102308 in ?? ()
#37 0xb2f09b38 in ?? ()
#38 0x00000052 in ?? ()
#39 0xb7f2d5b4 in ?? () from /usr/qt/3/plugins/sqldrivers/libqsqlmysql.so
#40 0xb48c3060 in ?? ()
#41 0xb7f2d5b4 in ?? () from /usr/qt/3/plugins/sqldrivers/libqsqlmysql.so
#42 0xb48c3060 in ?? ()
#43 0xb7f292ab in QMYSQLResult::reset () from /usr/qt/3/plugins/sqldrivers/libqsqlmysql.so
#44 0xb6bac2e6 in QSqlQuery::exec () from /usr/qt/3/lib/libqt-mt.so.3
#45 0xb72df6b8 in MythContext::GetSetting (this=0x80dfa18, key=@0xb48c3170, defaultval=@0xb48c30e0) at mythcontext.cpp:1520
querystr = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0xb2f109e8, static shared_null = 0x80cc070}
found = false
value = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80cc070, static shared_null = 0x80cc070}
query = {<> = {<No data fields>}, m_db = 0x80f1fe0, m_isConnected = true, m_returnConnection = true}
#46 0xb72dfdaa in MythContext::GetNumSetting (this=0x80dfa18, key=@0xb48c3170, defaultval=0) at mythcontext.cpp:1557
val = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0xb2f06e60, static shared_null = 0x80cc070}
retval = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x0, static shared_null = 0x80cc070}
#47 0x08099094 in Scheduler::FillRecordList (this=0x80f1960) at scheduler.cpp:234
lockit = {mtx = 0x80fcfe8}
#48 0x0809ce38 in Scheduler::RunScheduler (this=0x80f1960) at scheduler.cpp:905
msg = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0xb2f06fd8, static shared_null = 0x80cc070}
statuschanged = false
recIter = {<std::_List_iterator_base> = {_M_node = 0xb2f02ce8}, <No data fields>}
prerollseconds = 0
secsleft = 40021
nexttv = (EncoderLink *) 0x80facd8
nextRecording = (ProgramInfo *) 0xb2f16190
nextrectime = {d = {jd = 2453628}, t = {ds = 72000000}}
curtime = {d = {jd = 2453628}, t = {ds = 31979715}}
lastupdate = {d = {jd = 2453628}, t = {ds = 31947277}}
recordfileprefix = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0xb2f005a8, static shared_null = 0x80cc070}
startIter = {<std::_List_iterator_base> = {_M_node = 0xb2f02ce8}, <No data fields>}
blockShutdown = true
idleSince = {d = {jd = 0}, t = {ds = 0}}
idleTimeoutSecs = 0
idleWaitForRecordingTime = 15
firstRun = false
fillstart = {tv_sec = 1126702380, tv_usec = 45662}
fillend = {tv_sec = 1126702380, tv_usec = 45510}
matchTime = 0.000163000004
placeTime = 0.137218997
#49 0x0809ff2d in Scheduler::SchedulerThread (param=0x80f1960) at scheduler.cpp:1293
sched = (Scheduler *) 0x80f1960
#50 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#51 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 5 (Thread -1249092688 (LWP 28855)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb70200f1 in pthread_join () from /lib/tls/libpthread.so.0
#2 0xb7c4325d in TVRec::TeardownRecorder (this=0xb58c6008, killFile=false) at tv_rec.cpp:760
message = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80e22c8, static shared_null = 0x80cc070}
me = {<QCustomEvent> = {<> = {<No data fields>}, d = 0x0}, message = {static null = {
static null = <same as static member of an already seen type>, d = 0x80cc070, static shared_null = 0x80cc070},
d = 0x80e22c8, static shared_null = 0x80cc070}, extradata = {<QValueList<QString>> = {
sh = 0x812f9d8}, <No data fields>}}
blank_frame_map = {sh = 0x812bb90}
oldProfileName = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x8129580, static shared_null = 0x80cc070}
filelen = 67
#3 0xb7c42230 in TVRec::HandleStateChange (this=0xb58c6008) at tv_rec.cpp:638
tmpInternalState = kState_None
changed = true
startRecorder = false
closeRecorder = true
killRecordingFile = false
statename = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x812bcc0, static shared_null = 0x80cc070}
origname = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x812b420, static shared_null = 0x80cc070}
#4 0xb7c44128 in TVRec::RunTV (this=0xb58c6008) at tv_rec.cpp:916
#5 0xb7c440c9 in TVRec::EventThread (param=0xb58c6008) at tv_rec.cpp:900
thetv = (TVRec *) 0xb58c6008
#6 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#7 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 4 (Thread -1257485392 (LWP 28853)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb658c116 in nanosleep () from /lib/tls/libc.so.6
#2 0xb65b4740 in usleep () from /lib/tls/libc.so.6
#3 0xb7cf969b in SIScan::StartScanner (this=0x80fcb68) at siscan.cpp:121
#4 0xb7c3df71 in SpawnScanner (param=0x80fcb68) at tv_rec.cpp:56
scanner = (class SIScan *) 0x80fcb68
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 2 (Thread -1240441936 (LWP 28850)):
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb658c116 in nanosleep () from /lib/tls/libc.so.6
#2 0xb65b4740 in usleep () from /lib/tls/libc.so.6
#3 0xb7c44272 in TVRec::RunTV (this=0xb6106008) at tv_rec.cpp:925
#4 0xb7c440c9 in TVRec::EventThread (param=0xb6106008) at tv_rec.cpp:900
thetv = (TVRec *) 0xb6106008
#5 0xb701faba in start_thread () from /lib/tls/libpthread.so.0
#6 0xb65ba34e in clone () from /lib/tls/libc.so.6
Thread 1 (Thread -1238247200 (LWP 28847)):
#0 0xb6beba04 in QMutex::lock () from /usr/qt/3/lib/libqt-mt.so.3
#1 0x08092b9a in RefSocket::Lock (this=0xb2f10250) at server.h:22
#2 0x08072069 in MainServer::customEvent (this=0xb2f005c0, e=0x812c800) at mainserver.cpp:545
pbs = (PlaybackSock *) 0x8115678
sock = (RefSocket *) 0xb2f10250
sendGlobal = false
sentSet = {<QGList> = {<> = {<No data fields>}, firstNode = 0xb2f02430, lastNode = 0xb2f02430,
curNode = 0xb2f02430, curIndex = 0, numNodes = 1, iterators = 0x0}, <No data fields>}
iter = {<std::iterator<std::random_access_iterator_tag, PlaybackSock*, int, PlaybackSock**, PlaybackSock*&>> = {<No data fields>}, _M_current = 0x80e50b8}
broadcast = {<QValueList<QString>> = {sh = 0xb2f36f40}, <No data fields>}
sendstuff = true
#3 0xb6964efd in QObject::event () from /usr/qt/3/lib/libqt-mt.so.3
#4 0xb690f874 in QApplication::internalNotify () from /usr/qt/3/lib/libqt-mt.so.3
#5 0xb690ec2a in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3
#6 0xb6910581 in QApplication::sendPostedEvents () from /usr/qt/3/lib/libqt-mt.so.3
#7 0xb6910418 in QApplication::sendPostedEvents () from /usr/qt/3/lib/libqt-mt.so.3
#8 0xb68bc302 in QEventLoop::processEvents () from /usr/qt/3/lib/libqt-mt.so.3
#9 0xb6920d0c in QEventLoop::enterLoop () from /usr/qt/3/lib/libqt-mt.so.3
#10 0xb6920bce in QEventLoop::exec () from /usr/qt/3/lib/libqt-mt.so.3
#11 0xb690fa7f in QApplication::exec () from /usr/qt/3/lib/libqt-mt.so.3
#12 0x0806cf82 in main (argc=3, argv=0xbfc3f834) at main.cpp:587
a = <incomplete type>
logfile = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80df8c0, static shared_null = 0x80cc070}
binname = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80df8f8, static shared_null = 0x80cc070}
verboseString = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80df938, static shared_null = 0x80cc070}
daemonize = false
printsched = false
testsched = false
resched = false
nosched = false
printexpire = false
logfd = -1
pidfs = <incomplete type>
port = 6543
statusport = 6544
myip = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80ec0b8, static shared_null = 0x80cc070}
masterip = {static null = {static null = <same as static member of an already seen type>, d = 0x80cc070,
static shared_null = 0x80cc070}, d = 0x80e9288, static shared_null = 0x80cc070}
ismaster = true
runsched = true
(gdb)
More information about the mythtv-dev
mailing list