Opened 12 years ago

Closed 12 years ago

#3433 closed patch (fixed)

FrontEnd hangs when OSD is displayed while Teletext captions are enabled

Reported by: anonymous Owned by: danielk
Priority: minor Milestone: 0.21
Component: mythtv Version: head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

System uses XVMC for display. While watching a show, if closed captions (provided by Teletext page 801) are enabled and then do FF or REW multiple times the display hangs.

The problems comes from a semaphore deadlock. What happens is that new teletext data is received and hence results in the osdtypesteletext m_lock being locked. At the same time XVMC has to redraw the OSD so it locks the osdlock. The OSD display process then calls the Teletext draw function who will now hang since it requires the osdtypesteletext m_lock. Also since the teletext had received new data it calls the OSD::UpdateTeletext? function which results in the hang since it also needs to lock osdlock.

Attachments (2)

3433-v1.patch (8.0 KB) - added by pholmes@… 12 years ago.
Patch for FrontEnd? lockup
3433-v2.patch (5.6 KB) - added by danielk 12 years ago.
Code reviewed + updated patch (still untested)

Download all attachments as: .zip

Change History (5)

Changed 12 years ago by pholmes@…

Attachment: 3433-v1.patch added

Patch for FrontEnd? lockup

comment:1 Changed 12 years ago by danielk

Owner: changed from Isaac Richards to danielk

Changed 12 years ago by danielk

Attachment: 3433-v2.patch added

Code reviewed + updated patch (still untested)

comment:2 Changed 12 years ago by danielk

Milestone: unknown0.21
Type: defectpatch

I'm going to send Frank Muenchow a note about this ticket before I do anything further with this patch...

comment:3 Changed 12 years ago by danielk

Resolution: fixed
Status: newclosed

(In [13539]) Fixes #3433. Fixes a deadlock in teletext parser/renderer.

The patch is from pholmes at india dot com, and was reviewed and tested by Frank Muenchow.

The nature of the deadlock is described in the ticket.

Note: See TracTickets for help on using tickets.