Opened 15 years ago
Closed 15 years ago
#179 closed defect (fixed)
Hang when skipping through recording
Reported by: | Owned by: | danielk | |
---|---|---|---|
Priority: | minor | Milestone: | unknown |
Component: | mythtv | Version: | head |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
I get this quite consistently on recordings of certain programs.
To get it to happen, I start watching a recording then skip forward a few times using the '>' key.
It doesn't happen every time (only when my wife is watching!).
I then have to restart mythfrontend.
My f/e hardware is a Epia MII 13000, backend is a P4 with 2xHauppauge Nova-T's.
This is running revision 6906
I see this in the logs:
2005-07-30 09:37:09.124 Changing from None to WatchingPreRecorded 2005-07-30 09:37:09.174 Video timing method: DRM 2005-07-30 09:37:14.179 prebuffering pause 2005-07-30 09:37:16.140 Prebuffer wait timed out 10 times. 2005-07-30 09:37:16.200 ProcessFrameXvMC tried to reuse frame but failed 2005-07-30 09:37:16.200 ProcessFrameXvMC -- called with no frame 2005-07-30 09:37:24.380 prebuffering pause 2005-07-30 09:37:28.290 prebuffering pause 2005-07-30 09:37:30.121 ProcessFrameXvMC tried to reuse frame but failed 2005-07-30 09:37:30.121 ProcessFrameXvMC -- called with no frame 2005-07-30 09:37:30.214 Prebuffer wait timed out 10 times. 2005-07-30 09:37:32.211 prebuffering pause [mpegvideo_xvmc_vld @ 0xb7863b08]error: decoding B frame and past frame is null!error: decoding B frame and past frame is null!2005-07-30 09:37:37.375 prebuffering pause 2005-07-30 09:37:37.427 AddInheritence past e NOT in used or in done. AAAAAAAAAAAAAdLL 2005-07-30 09:37:37.439 AddInheritence past e NOT in used or in done. LAAAAAAAAAAAAdLU 2005-07-30 09:37:37.500 prebuffering pause 2005-07-30 09:37:37.556 prebuffering pause 2005-07-30 09:37:38.319 prebuffering pause 2005-07-30 09:37:38.462 prebuffering pause 2005-07-30 09:37:38.465 AddInheritence past g NOT in used or in done. AdAAAAAAAAALLAAA 2005-07-30 09:37:38.483 AddInheritence past g NOT in used or in done. AdAAAAAAAAALULAA 2005-07-30 09:37:38.553 prebuffering pause 2005-07-30 09:37:38.615 prebuffering pause 2005-07-30 09:37:38.986 prebuffering pause 2005-07-30 09:37:40.940 Prebuffer wait timed out 10 times. 2005-07-30 09:37:41.000 ProcessFrameXvMC tried to reuse frame but failed 2005-07-30 09:37:41.000 ProcessFrameXvMC -- called with no frame 2005-07-30 09:37:41.504 prebuffering pause error: decoding B frame and past frame is null!Past frame is a B frame in findPastSurface 2005-07-30 09:37:52.789 prebuffering pause [mpegvideo_xvmc_vld @ 0xb7863b08]error: decoding B frame and past frame is null!error: decoding B frame and past frame is null!2005-07-30 09:37:54.618 prebuffering pause
I'll attach a thread dump from when it's in 'hung' state.
Attachments (1)
Change History (4)
comment:1 Changed 15 years ago by
Owner: | changed from Isaac Richards to danielk |
---|
Daniel, looks like there's a deadlock in your videobuffers locking.
comment:2 Changed 15 years ago by
Status: | new → assigned |
---|
I think this happens because the NVP doesn't properly flush frames when you skip ahead.
I think the locking is actually doing the right thing in preventing you from accessing a frame you shouldn't, but the number of frames available is too low because the frames from before the skip are never freed.
comment:3 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Adds a new functiuon to the NVP ReleaseNextVideoFrame?(null) which gets and releases the next frame that would normally displayed.
Adds a call to NVP::ReleaseNextVideoFrame?(null) in the AvFormatDecoderPrivate::SeekReset?() skipFrames loop.
This should address the XvMC hang in FF x3 mode and with same problem with exact seeking.
output of thread apply all bt full