[mythtv-commits] Ticket #9263: Cut list editor stuck in endless wait loop
MythTV
mythtv at cvs.mythtv.org
Fri Nov 19 19:25:04 UTC 2010
#9263: Cut list editor stuck in endless wait loop
-----------------------------------------+----------------------------------
Reporter: chemobejk@… | Owner: janne
Type: Bug Report | Status: new
Priority: major | Milestone:
Component: MythTV - Video Playback | Version: 0.24
Severity: high | Keywords: cut list editor stuck
Ticket locked: 0 |
-----------------------------------------+----------------------------------
I'm not sure if this is related to ticket #9122. But that ticket is closed
and I still have issues with the cut list editor which gets stuck and
blocks the whole frontend. I've now tracked it down with gdb to this
location in the code:
{{{
#0 MythPlayer::WaitForSeek (this=0xabe8bc8, frame=3794,
override_seeks=false,
seeks_wanted=false) at mythplayer.cpp:3451
#1 0x0416ddfc in MythPlayer::DoFastForward (this=0xabe8bc8, frames=3794,
override_seeks=true, seeks_wanted=true) at mythplayer.cpp:3404
#2 0x0416f54c in MythPlayer::HandleArbSeek (this=0xabe8bc8, right=true)
at mythplayer.cpp:3719
#3 0x0417f4e8 in MythPlayer::HandleProgramEditorActions (this=0xabe8bc8,
actions=..., frame=1) at mythplayer.cpp:3595
#4 0x0414a60e in TV::ProcessKeypress (this=0xab4ba50, actx=0xae132f0,
e=0xbc75c98) at tv_play.cpp:3651
}}}
i.e. the frontend is stuck in this endless loop, because decoderSeek never
is set to -1:
{{{
decoderSeekLock.lock();
decoderSeek = frame;
decoderSeekLock.unlock();
...
while (decoderSeek >= 0)
{
usleep(1000);
...
}
}}}
As far as I can see decoderSeek is only updated in
MythPlayer::DecoderLoop():
{{{
if (decoderSeek >= 0)
{
decoderSeekLock.lock();
...
decoderSeek = -1;
decoderSeekLock.unlock();
}
}}}
The code looks correct to me, i.e. when WaitForSeek() sets decoderSeek >=
0 the next run of the DecoderLoop() should set it to -1. I probably don't
have the necessary overview to understand the different threads. Maybe the
DecoderThread is disabled and therefore the code in the loop isn't
executed under certain conditions?
In the debugger I programmed a breakpoint inside the loop that waits until
count has reached 500 and then forces decoderSeek to -1 to break the loop.
With this in place the display isn't correctly updated when the error
occurs, but now the cut list editor/frontend recovers from it so that I
can at least continue to use it.
The recordings I'm trying to edit are MPEG2 recordings taken from a DVB-C
card.
If you need more information, please provide pointers how I can collect it
for you.
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/9263>
MythTV <http://www.mythtv.org/>
MythTV Media Center
More information about the mythtv-commits
mailing list