[mythtv-commits] Ticket #11870: Channel scanning deadlock with DVB
MythTV
noreply at mythtv.org
Sat Sep 21 11:28:03 UTC 2013
#11870: Channel scanning deadlock with DVB
--------------------------------------------+------------------------
Reporter: Rune Petersen <rune@…> | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: new
Priority: minor | Milestone: unknown
Component: MythTV - Channel Scanner | Version: 0.27-fixes
Severity: medium | Keywords:
Ticket locked: 0 |
--------------------------------------------+------------------------
I get a 100% reproducible deadlock when scanning for DVB channels.
It always happens on transponder 1070, which may mean this issue is hard
to trigger.
Anyway this is clearly a deadlock:
DVBStreamHandler::RunTS()
holds MPEGStreamData::_encryption_lock and then tries to take
ChannelScanSM::lock
ChannelScanSM::run()
holds ChannelScanSM::lock and then tries to take
MPEGStreamData::_encryption_lock
callstack:
#0 syscall () at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
#1 0x75a19624 in ?? () from /usr/lib/arm-linux-gnueabihf/libQtCore.so.4
#2 0x75a16cfe in QMutex::lockInternal() () from /usr/lib/arm-linux-
gnueabihf/libQtCore.so.4
#3 0x769e24e0 in QMutex::lockInline (this=0xe236a8) at
/usr/include/qt4/QtCore/qmutex.h:198
#4 0x769e2438 in QMutexLocker::QMutexLocker (this=0x642b993c, m=0xe236a8)
at /usr/include/qt4/QtCore/qmutex.h:109
#5 0x76cf9f7c in ChannelScanSM::HandleEncryptionStatus (this=0xe23660,
pnum=2740, encrypted=true)
at channelscan/channelscan_sm.cpp:551
#6 0x76af79be in MPEGStreamData::ProcessEncryptedPacket (this=0xe40890,
tspacket=...) at mpeg/mpegstreamdata.cpp:2016
#7 0x76af47a2 in MPEGStreamData::ProcessTSPacket (this=0xe40890,
tspacket=...) at mpeg/mpegstreamdata.cpp:1046
#8 0x76af4694 in MPEGStreamData::ProcessData (this=0xe40890,
buffer=0x6380a008 "G\037\220\220", <incomplete sequence \336>,
len=102648) at mpeg/mpegstreamdata.cpp:1022
#9 0x76dcbb4e in DVBStreamHandler::RunTS (this=0xe3d828) at
recorders/dvbstreamhandler.cpp:266
#10 0x76dcad84 in DVBStreamHandler::run (this=0xe3d828) at
recorders/dvbstreamhandler.cpp:118
#11 0x767ebcde in ?? () from /usr/lib/libmythbase-0.27.so.0
#12 0x75a1a49a in ?? () from /usr/lib/arm-linux-gnueabihf/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
#13 0x75a1a49a in ?? () from /usr/lib/arm-linux-gnueabihf/libQtCore.so.4
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 21 (Thread 0x652ba410 (LWP 27669)):
#0 syscall () at ../ports/sysdeps/unix/sysv/linux/arm/syscall.S:37
#1 0x75a19624 in ?? () from /usr/lib/arm-linux-gnueabihf/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
#2 0x75a16dcc in QMutex::lock() () from /usr/lib/arm-linux-
gnueabihf/libQtCore.so.4
#3 0x769e24e0 in QMutex::lockInline (this=0xe4094c) at
/usr/include/qt4/QtCore/qmutex.h:198
#4 0x769e2438 in QMutexLocker::QMutexLocker (this=0x652b9834, m=0xe4094c)
at /usr/include/qt4/QtCore/qmutex.h:109
#5 0x76af71d2 in MPEGStreamData::TestDecryption (this=0xe40890,
pmt=0x6dca7170) at mpeg/mpegstreamdata.cpp:1885
#6 0x76cfa450 in ChannelScanSM::TestNextProgramEncryption (this=0xe23660)
at channelscan/channelscan_sm.cpp:627
#7 0x76cfb69e in ChannelScanSM::UpdateChannelInfo (this=0xe23660,
wait_until_complete=false)
at channelscan/channelscan_sm.cpp:877
#8 0x76cfede6 in ChannelScanSM::HandleActiveScan (this=0xe23660) at
channelscan/channelscan_sm.cpp:1584
#9 0x76cfe8d8 in ChannelScanSM::run (this=0xe23660) at
channelscan/channelscan_sm.cpp:1482
#10 0x767ebcba in MThread::run() () from /usr/lib/libmythbase-0.27.so.0
#11 0x767ebcde in ?? () from /usr/lib/libmythbase-0.27.so.0
#12 0x75a1a49a in ?? () from /usr/lib/arm-linux-gnueabihf/libQtCore.so.4
--
Ticket URL: <http://code.mythtv.org/trac/ticket/11870>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list