Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: MythTV: Commits

Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener

 

 

MythTV commits RSS feed   Index | Next | Previous | View Threaded


noreply at mythtv

Jun 29, 2012, 3:58 AM

Post #1 of 16 (325 views)
Permalink
Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
-------------------------------------+-------------------------------------
Reporter: roger@… | Type: Bug Report -
Status: new | Hang/Deadlock
Milestone: unknown | Priority: minor
Version: 0.25-fixes | Component: MythTV - General
Keywords: AddListener | Severity: medium
RemoveListener | Ticket locked: 0
-------------------------------------+-------------------------------------
There is a race condition when a thread calls StreamHandler::AddListener
when a parallel executing thread has already called
AddListener::RemoveListener. This results in both threads being deadlocked
and never returning from these calls. The error message "Programmer Error:
Start called before Stop finished" is also logged. The symptoms of this
problem are recordings appearing in the completed recordings list which
either have no file associated with them or a file with only a few bytes
(usually 326 I think) in it.

I have attached a log showing this problem. This log is from mythbackend
running on a quad core machine.

The backend is attempting to record two programs with the same start time
on the same DTV multiplex. The capture cards are configured to allow
multiple simultaneous recordings. The salient log lines are at

2012-06-26 21:00:02.354383 I [2501/2511] TVRecEvent streamhandler.cpp:97
(RemoveListener) - SH(/dev/dvb/adapter201/frontend0):
RemoveListener(0xffffffffa1031e80) -- begin

The thread 2511 will end up blocked in StreamHandler::Stop and never
return, and

2012-06-26 21:00:02.369020 I [2501/2706] RecThread streamhandler.cpp:45
(AddListener) - SH(/dev/dvb/adapter201/frontend0): AddListener(0x972e448)
-- begin

The thread 2706 will end up blocked in StreamHandler:Start and never
return.

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 3, 2012, 4:23 AM

Post #2 of 16 (307 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner:
Type: Bug Report - Hang/Deadlock | Status: new
Priority: minor | Milestone: unknown
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution:
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by Roger James <roger@…>):

The patch below is solely intended as a work around, and I have put it
here for information only. I have regression tested it and done some very
basic testing against the issue I reported. It appears to work. I don't
like the idea of introducing extra locks to fix a bug, but it is the least
intrusive change I could think of. A better fix would possibly be the
implementation of a proper finite state machine with queued event
handling.

Roger

{{{
$ git diff streamhandler.cpp
diff --git a/mythtv/libs/libmythtv/streamhandler.cpp
b/mythtv/libs/libmythtv/str
index 2b0a7b6..28de368 100644
--- a/mythtv/libs/libmythtv/streamhandler.cpp
+++ b/mythtv/libs/libmythtv/streamhandler.cpp
@@ -133,7 +133,8 @@ void StreamHandler::RemoveListener(MPEGStreamData
*data)

void StreamHandler::Start(void)
{
- QMutexLocker locker(&_start_stop_lock);
+ QMutexLocker
start_stop_procedure_locker(&_start_stop_procedure_lock);
+ QMutexLocker start_stop_locker(&_start_stop_lock);

if (_running)
{
@@ -173,7 +174,8 @@ void StreamHandler::Start(void)

void StreamHandler::Stop(void)
{
- QMutexLocker locker(&_start_stop_lock);
+ QMutexLocker
start_stop_procedure_locker(&_start_stop_procedure_lock);
+ QMutexLocker start_stop_locker(&_start_stop_lock);

do
{
$ git diff streamhandler.h
diff --git a/mythtv/libs/libmythtv/streamhandler.h
b/mythtv/libs/libmythtv/strea
index 1db0584..ae0bc80 100644
--- a/mythtv/libs/libmythtv/streamhandler.h
+++ b/mythtv/libs/libmythtv/streamhandler.h
@@ -45,7 +45,7 @@ class PIDInfo
typedef QMap<uint,PIDInfo*> PIDInfoMap;

// locking order
-// _pid_lock -> _listener_lock -> _start_stop_lock
+// _pid_lock -> _listener_lock -> _start_stop_procedure_lock ->
_start_stop_lock

class StreamHandler : protected MThread, public DeviceReaderCB
{
@@ -93,7 +93,7 @@ class StreamHandler : protected MThread, public
DeviceReaderCB
virtual void RemoveNamedOutputFile(const QString &filename) {}
/// At minimum this sets _running_desired, this may also send
/// signals to anything that might be blocking the run() loop.
- /// \note: The _start_stop_lock must be held when this is called.
+ /// \note: The _start_stop_procedure_lock and the _start_stop_lock
must be
virtual void SetRunningDesired(bool desired) { _running_desired =
desired;

protected:
@@ -101,6 +101,7 @@ class StreamHandler : protected MThread, public
DeviceReader
bool _needs_buffering;
bool _allow_section_reader;

+ mutable QMutex _start_stop_procedure_lock; /// Serialises calls to
Start
mutable QMutex _start_stop_lock;
volatile bool _running_desired;
volatile bool _error;
$
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:1>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 5, 2012, 1:15 AM

Post #3 of 16 (302 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: assigned
Priority: minor | Milestone: unknown
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution:
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by beirdo):

* owner: => danielk
* status: new => assigned


--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:2>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 18, 2012, 2:37 PM

Post #4 of 16 (303 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: accepted
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution:
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by danielk):

* priority: minor => major
* status: assigned => accepted
* milestone: unknown => 0.26


--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:3>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 23, 2012, 11:15 AM

Post #5 of 16 (294 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by Daniel Thor Kristjansson <danielk@…>):

* status: accepted => closed
* resolution: => fixed


Comment:

In [changeset:1b5864ddcf6d37a5801e2ceccfd1ed9ba6886f35/mythtv]:
{{{
#!CommitTicketReference repository="mythtv"
revision="1b5864ddcf6d37a5801e2ceccfd1ed9ba6886f35"
Fixes #10870. Fixes StreamHandler Start()/Stop() race.
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:4>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 23, 2012, 2:16 PM

Post #6 of 16 (294 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by Daniel Thor Kristjansson <danielk@…>):

In [changeset:5f04f275d50d69f81dbaa05a0b37acd0b68fc9ec/mythtv]:
{{{
#!CommitTicketReference repository="mythtv"
revision="5f04f275d50d69f81dbaa05a0b37acd0b68fc9ec"
Fixes #10870. Fixes StreamHandler Start()/Stop() race.

Conflicts:

mythtv/libs/libmythtv/recorders/streamhandler.cpp
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:5>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 23, 2012, 3:32 PM

Post #7 of 16 (288 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by Daniel Thor Kristjansson <danielk@…>):

In [changeset:ab52f19a201d5238e21e068cae1bc4215c62ee07/mythtv]:
{{{
#!CommitTicketReference repository="mythtv"
revision="ab52f19a201d5238e21e068cae1bc4215c62ee07"
Revert "Fixes #10870. Fixes StreamHandler Start()/Stop() race."

Unfortunately this causes deadlocks in the DVBStreamHandler code.

This reverts commit 1b5864ddcf6d37a5801e2ceccfd1ed9ba6886f35.
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:6>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 23, 2012, 3:32 PM

Post #8 of 16 (287 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: new
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution:
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by danielk):

* status: closed => new
* resolution: fixed =>


--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:7>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 24, 2012, 9:14 AM

Post #9 of 16 (282 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by Daniel Thor Kristjansson <dkristjansson@…>):

* status: new => closed
* resolution: => fixed


Comment:

In [changeset:f612576017d1cdd0d2f815dce162cf0fd5310ab0/mythtv]:
{{{
#!CommitTicketReference repository="mythtv"
revision="f612576017d1cdd0d2f815dce162cf0fd5310ab0"
Fixes #10870. Fix Start/Stop race condition in StreamHandler.

Take two... The locking order documented in streamhandler.h wasn't being
adhered to
in the DVBStreamHandler. The actual locking order is now documented and a
new lock
has been added for AddListener/RemoveListener as per the suggested code
from Roger
James.
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:8>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 24, 2012, 9:14 AM

Post #10 of 16 (282 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: major | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by Daniel Thor Kristjansson <dkristjansson@…>):

In [changeset:445faaa47005601c8be21bfcfd1e5b0e51d111ec/mythtv]:
{{{
#!CommitTicketReference repository="mythtv"
revision="445faaa47005601c8be21bfcfd1e5b0e51d111ec"
Fixes #10870. Fix Start/Stop race condition in StreamHandler.

Take two... The locking order documented in streamhandler.h wasn't being
adhered to
in the DVBStreamHandler. The actual locking order is now documented and a
new lock
has been added for AddListener/RemoveListener as per the suggested code
from Roger
James.
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:9>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 28, 2012, 1:44 PM

Post #11 of 16 (279 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: new
Priority: critical | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution:
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by stuartm):

* priority: major => critical
* status: closed => new
* resolution: fixed =>


Comment:

This doesn't appear to be fixed, just experienced the deadlock in
StreamHandler::RemoveListener(), BT attached.

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:10>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 30, 2012, 9:47 AM

Post #12 of 16 (274 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: critical | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------
Changes (by Daniel Thor Kristjansson <dkristjansson@…>):

* status: new => closed
* resolution: => fixed


Comment:

In [changeset:9c199a42258f2a19dd1c8d3b934e6eb04f1757ce/mythtv]:
{{{
#!CommitTicketReference repository="mythtv"
revision="9c199a42258f2a19dd1c8d3b934e6eb04f1757ce"
Fixes #10870. Fix Start/Stop race condition in StreamHandler.

This is a backport of [445faaa47].
}}}

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:11>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Jul 30, 2012, 9:51 AM

Post #13 of 16 (275 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: critical | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by danielk):

stuartm, unless we have a backtrace with the deadlocked threads we can't
really do anything. For now, I've backported the current fix to
0.25-fixes.

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:12>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Aug 20, 2012, 6:31 AM

Post #14 of 16 (227 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: critical | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by pedro@…):

This problem doesn't seem fixed. I'm running the ubuntu packages of mythtv
version 0.25.2+fixes.20120802.46cab93-0ubuntu1 that judging by the date
should include the July 24th backport and yet the backend gets completely
deadlocked when trying to record more than one show at a time from the
same DVB-T card where all channels are available on the same frequency in
a single stream.

To get the server back up I have to kill -9 the backend process and then
restart it. I've attached a backtrace that seems to show both calls to
StreamHandler::RemoveListener and StreamHandler::AddListener as this bug
describes. I've setup recordings of 3 news shows at the same times twice a
day and this seems to trip the bug every time, so if any other information
is needed let me know.

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:13>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Aug 20, 2012, 7:11 AM

Post #15 of 16 (224 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: critical | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by danielk):

Perdo, please test the 0.26 beta.

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:14>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits


noreply at mythtv

Aug 21, 2012, 7:05 AM

Post #16 of 16 (213 views)
Permalink
Re: Ticket #10870: Race condition between StreamHandler::RemoveListener and StreamHandler::AddListener [In reply to]

#10870: Race condition between StreamHandler::RemoveListener and
StreamHandler::AddListener
----------------------------------------+----------------------------
Reporter: roger@… | Owner: danielk
Type: Bug Report - Hang/Deadlock | Status: closed
Priority: critical | Milestone: 0.26
Component: MythTV - General | Version: 0.25-fixes
Severity: medium | Resolution: fixed
Keywords: AddListener RemoveListener | Ticket locked: 0
----------------------------------------+----------------------------

Comment (by Pedro Côrte-Real <pedro@…>):

I tested the packages from https://launchpad.net/~mythbuntu/+archive/0.26
version 0.26.0~master.20120816.7203f17-0ubuntu0mythbuntu2. With those I
was able to record 3 shows at a time without it failing.

--
Ticket URL: <http://code.mythtv.org/trac/ticket/10870#comment:15>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
_______________________________________________
mythtv-commits mailing list
mythtv-commits [at] mythtv
http://www.mythtv.org/mailman/listinfo/mythtv-commits

MythTV commits RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.