Opened 14 years ago

Closed 14 years ago

#179 closed defect (fixed)

Hang when skipping through recording

Reported by: mythtv-dev.spam@… 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)

hang.txt (34.7 KB) - added by mythtv-dev.spam@… 14 years ago.
output of thread apply all bt full

Download all attachments as: .zip

Change History (4)

Changed 14 years ago by mythtv-dev.spam@…

Attachment: hang.txt added

output of thread apply all bt full

comment:1 Changed 14 years ago by Isaac Richards

Owner: changed from Isaac Richards to danielk

Daniel, looks like there's a deadlock in your videobuffers locking.

comment:2 Changed 14 years ago by danielk

Status: newassigned

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 14 years ago by danielk

Resolution: fixed
Status: assignedclosed

(In [7221]) Fixes #179.

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.

Note: See TracTickets for help on using tickets.