﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc	mlocked
9263	Cut list editor stuck in endless wait loop	chemobejk@…	Janne Grunau	"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."	Bug Report	closed	trivial		MythTV - Video Playback	0.24	low	Invalid	cut list editor stuck		0
