Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#539 closed defect (fixed)

XVMC Chromakey OSD Crash

Reported by: gkruse@… Owned by: danielk
Priority: minor Milestone: 0.20
Component: mythtv Version: head
Severity: medium Keywords: xvmc Chromakey OSD
Cc: Ticket locked: no

Description

The decoding works great, really smooth. As soon as I press any button that would bring up the osd, mythfrontend crashes with the error below. (I can provide a bt if needed) This is on a celeron 450 with a GeForce4 MX 440. Nvidia driver - 7676

2005-10-28 01:31:15.721 TV: Attempting to change from None to WatchingPreRecorded? 2005-10-28 01:31:15.839 Disable DPMS 0: start_time: 0.036 duration: 43.240 1: start_time: 0.030 duration: 43.252 stream: start_time: 0.334 duration: 480.576 bitrate=1945 kb/s 2005-10-28 01:31:16.830 AFD: Opened codec 0x8167170, id(MPEG2VIDEO_XVMC) type(Video) 2005-10-28 01:31:16.908 AFD: Opened codec 0x82a95e0, id(MP2) type(Audio) 2005-10-28 01:31:16.949 Opening audio device '/dev/dsp'. 2005-10-28 01:31:16.950 Opening OSS audio device '/dev/dsp'. 2005-10-28 01:31:19.358 TV: Changing from None to WatchingPreRecorded? 2005-10-28 01:31:19.366 Using realtime priority. XvMC: picture structure FRAME 2005-10-28 01:31:20.070 Video timing method: SGI OpenGL 2005-10-28 01:31:20.234 prebuffering pause 2005-10-28 01:31:20.400 prebuffering pause [mpegvideo_xvmc @ 0xb785f4c4]ac-tex damaged at 20 17 [mpegvideo_xvmc @ 0xb785f4c4]Warning MVs not available [mpegvideo_xvmc @ 0xb785f4c4]mb incr damaged [mpegvideo_xvmc @ 0xb785f4c4]Warning MVs not available [mpegvideo_xvmc @ 0xb785f4c4]00 motion_type at 15 18 [mpegvideo_xvmc @ 0xb785f4c4]skipped MB in I frame at 15 29 [mpegvideo_xvmc @ 0xb785f4c4]end mismatch left=35 [mpegvideo_xvmc @ 0xb785f4c4]ac-tex damaged at 21 25 [mpegvideo_xvmc @ 0xb785f4c4]slice mismatch [mpegvideo_xvmc @ 0xb785f4c4]Warning MVs not available [mpegvideo_xvmc @ 0xb785f4c4]ac-tex damaged at 6 16 * glibc detected * double free or corruption (!prev): 0x0887a800 *

waiting for X server to shut down

Attachments (6)

xvmcCKosd.bt (696 bytes) - added by gkruse@… 14 years ago.
really meak bt
xvmcCKosd_configureOutput.txt (1.2 KB) - added by gkruse@… 14 years ago.
output of configure
xvmcCKosd_frontendLog.txt (25.4 KB) - added by gkruse@… 14 years ago.
mythfrontend -v playback log
xvmcCKosd.2.bt (11.9 KB) - added by gkruse@… 14 years ago.
better backtrace with manually switched threads
valgrind.txt (31.2 KB) - added by gkruse@… 14 years ago.
valgrind log
valgrind.2.txt (39.7 KB) - added by gkruse@… 14 years ago.
newest valgrind log

Download all attachments as: .zip

Change History (16)

comment:1 Changed 14 years ago by danielk

Milestone: 0.190.20

I'm just moving this to 0.20, this is not yet a supported feature.

I think it is trying to place the OSD outside the screen in some of the letterbox modes.

comment:2 Changed 14 years ago by danielk

Resolution: fixed
Status: newclosed

(In [7663]) Fixes #539.

It was a problem with calculating the OSD bounds and using them correctly.

comment:3 Changed 14 years ago by gkruse@…

Resolution: fixed
Status: closedreopened

I am still getting this crash using the most recent svn (7671). I have tried to produce a backtrace, but I don't think it will be very useful because for some reason it will only show one thread. Sometimes I get a segmentation fault, others I get the double free message. I will also attach the output of configure if that helps at all. I know this is still an unsupported feature so I greatly appreciate all of the work that goes into this issue.

Changed 14 years ago by gkruse@…

Attachment: xvmcCKosd.bt added

really meak bt

Changed 14 years ago by gkruse@…

output of configure

Changed 14 years ago by gkruse@…

Attachment: xvmcCKosd_frontendLog.txt added

mythfrontend -v playback log

Changed 14 years ago by gkruse@…

Attachment: xvmcCKosd.2.bt added

better backtrace with manually switched threads

comment:4 Changed 14 years ago by gkruse@…

I figured out how to do a bt via manually switching threads so here it is

comment:5 Changed 14 years ago by danielk

Can you repeat this under Valgrind?

As with many memory overwriting problems the backtrace is not too helpful.

Also, what are your overscan/underscan/letterboxing options?

comment:6 Changed 14 years ago by gkruse@…

Valgrind crashes saying the impossible happened before the frontend ever finishes loading (log attached). I even recompiled with --enable-valgrind. Is there something I'm doing wrong in valgrind? I've never used it before.

Changed 14 years ago by gkruse@…

Attachment: valgrind.txt added

valgrind log

Changed 14 years ago by gkruse@…

Attachment: valgrind.2.txt added

newest valgrind log

comment:7 Changed 14 years ago by gkruse@…

Finally got valgrind to let me playback and produce the crash while running valgrind. Log attached

comment:8 Changed 14 years ago by tom@…

That is a bug in valgrind, yes. It is bug #112152 in the valgrind bug tracker and is fixed in the current valgrind SVN code.

comment:9 Changed 14 years ago by danielk

Resolution: fixed
Status: reopenedclosed

(In [7682]) Fixes #539.

gkruse, this is probably not what you want to hear, but the ChromaKey? OSD only supports 32 bit ARGB visuals.. and you are using a 16 bit RGB visual.

This commit adds a check that the visual is a 32 bits visual, if it is not ChromaKey? OSD is not enabled. ChromaKey? OSD could be extended to support other visuals, but it would involve creating new OSD blend functions.

One could also make Qt pick a 32 bit ARGB visual if one is available, but a google search reveals that this requires subclassing QFrame to use a better visual, and ALWAYS using the subclass to create windows. This is because Qt stores the visual information in global variables, so that all Qt windows in an application must use the same visual.. (Ugh!) That kind of change doesn't make sense before the new MythUI stuff is in place.

Until then you can probably configure X11 to pick a 32 bit ARGB visual by default for the root window. QFrame uses the root window's visual for the windows it creates, so this should make ChromaKey? OSD work for you.

comment:10 Changed 14 years ago by gkruse@…

Thanks for all the hard work. Setting the "DefaultDepth?" in xorg.conf to 24 from 16 did the trick. According to the man page, setting a depth of 24 sets the default pixelformat to 32ARGB unless the hardware can't support it which is rare. Will the increased depth impact the performance much? Either way, I can now watch dvds on my celeron 450 without the major skipping and jumping as long as there is absolutely nothing else going on on the machine. Thanks again.

Note: See TracTickets for help on using tickets.