[mythtv-commits] Ticket #9868: Hang in Live TV channel change

MythTV noreply at mythtv.org
Wed Aug 3 13:32:32 UTC 2011


#9868: Hang in Live TV channel change
---------------------------------------------+----------------------------
 Reporter:  skd5aner <skd5aner@…>            |          Owner:  janne
     Type:  Bug Report - Hang/Deadlock       |         Status:  new
 Priority:  minor                            |      Milestone:  unknown
Component:  MythTV - Video Playback          |        Version:  0.24-fixes
 Severity:  medium                           |     Resolution:
 Keywords:  Live TV, channel changing, hang  |  Ticket locked:  0
---------------------------------------------+----------------------------

Comment (by Ian Dall <ian@…>):

 I am seeing what looks like the same bug still in v0.25pre-2771-g3378703.
 I get two slightly different manifestations. One is a SIGSEGV and the
 other is a "hang" with the guide screen showing but unpopulated.

 When I don't get a SIGSEGV I get the messages:
 {{{
 2011-08-03 21:27:46.554236 E  TV: LiveTV not successfully started
 2011-08-03 21:27:46.554413 I  TV: Main UI disabled.
 2011-08-03 21:27:46.727464 I  TV: Entering main playback loop.
 2011-08-03 21:28:32.007203 I  TV: Exiting main playback loop.
 QMutex::lock: mutex lock failure: Invalid argument
 }}}

 My theory is that both behaviours have the same cause because when I catch
 the SIGSEGV with gdb, the screen shows the guide in much the same state at
 for the "Invalid argument" case. Both cases have similar stack traces
 (like the gdb.txt attachment).Probably there is some uninitialised
 location, and depending on exactly what rubbish is in the location causes
 either a SIGSEGV or other undefined behaviour.

 GuideGrid::updateChannels calls  m_player->GetPlayerReadLock. It seems
 that since the LiveTV was not successfully started, maybe there is no
 valid mutex to lock. Certainly, after the SIGSEGV, gdb shows
 {{{
 (gdb) frame 0
 #0  0x02e1d90a in QMutex::lock (this=0xa071c40) at thread/qmutex.cpp:151
 (gdb) print d
 $9 = (QMutexPrivate *) 0x0
 }}}
 so attempting to access d->recursive will cause the fault.

 I'm attaching a backtrace for the SIGSEGV case.

-- 
Ticket URL: <http://code.mythtv.org/trac/ticket/9868#comment:1>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center


More information about the mythtv-commits mailing list