[mythtv-commits] Ticket #13415: DVBChannel hangs during Close() and Open() due to corruption of is_open

MythTV noreply at mythtv.org
Wed Feb 27 09:02:49 UTC 2019


#13415: DVBChannel hangs during Close() and Open() due to corruption of is_open
--------------------------------------------+--------------------------
     Reporter:  simonhyde                   |      Owner:  (none)
         Type:  Bug Report - Hang/Deadlock  |     Status:  new
     Priority:  minor                       |  Milestone:  needs_triage
    Component:  MythTV - DVB                |    Version:  Unspecified
     Severity:  medium                      |   Keywords:
Ticket locked:  0                           |
--------------------------------------------+--------------------------
 When allowing multiple simultaneous recordings on a single tuner in DVB
 mode and having multiple recordings ending at the same time, mythbackend
 can hang.

 This is because the is_open map of the "master" tuner is modified from
 multiple threads simultaneously. This can cause the underlying RB tree
 inside the QMap to get corrupted, such that the next time is_open is
 accessed (by DVBChannel::Open or DVBChannel::Close, for example) QMap gets
 stuck in an infinite loop.

 Extending the hw_lock to cover is_open cures this, and I've submitted 2
 pull requests on github to cover it

 Against fixes/29:
 https://github.com/MythTV/mythtv/pull/179

 And ported forward to master:
 https://github.com/MythTV/mythtv/pull/178

 I have only built/tested the version against fixes/29, but I see no reason
 the fix wouldn't work on master too.

-- 
Ticket URL: <https://code.mythtv.org/trac/ticket/13415>
MythTV <http://www.mythtv.org>
MythTV Media Center


More information about the mythtv-commits mailing list