[mythtv] XvMC crashing - gdb backtrace

Emlyn.Bolton at nokia.com Emlyn.Bolton at nokia.com
Wed Nov 12 13:28:18 EST 2003


Hi Chris,

I've been trying to get Myth to compile with Xv support, but have issues with unresolved symbols in the NVidia module.  how did you get round this?

I've got a debian stable system, with all the extras built from source.

Cheers,

Emlyn

-----Original Message-----
From: mythtv-dev-bounces at mythtv.org
[mailto:mythtv-dev-bounces at mythtv.org]On Behalf Of ext Chris Wieringa
Sent: Tuesday, November 11, 2003 3:24 PM
To: mythtv-dev at mythtv.org
Subject: [mythtv] XvMC crashing - gdb backtrace


Hey all,
  Alright, I'm having some problems getting XvMC working on MythTV .12 with my GF4MX.  Basically, I can get it compiled correctly and it starts running fine.  I can watch one program using XvMC, but after the first program any additional program playing seg faults the program.  After restarting X I can watch another show.

I've already posted my steps in trying to get XvMC working on the mythtv-users list, and I'm reposting that here.  Below the repost, I've posted the gdb backtrace for the crash.  Hopefully I can get this working soon, the entire system just rocks.

-----------------------

Repost of XvMC steps to get it working:

Originally, when I would try to playback XvMC content mythfrontend would seg
fault.  I also could not use mplayer's XvMC output plugin, so I figured there
was something wrong with my X setup.  After downgrading my NVIDIA drivers from
1.0-4496 to 1.0-4363 (as was suggested from this list), it still didn't work. 

This morning I started digging through my XF86config file, and noticed that I
had TwinView set up even though I'm only using the TV for video output.  Also,
re-reading NVIDIA's readme on TwinView I noticed that there was a warning about
overlay support / etc when TwinView was enabled.  So, I disabled TwinView and
setup the TV to be my only monitor in the XF86config file.  After reloading X,
I found the mplayer's XvMC support now worked.  So I recompiled MythTV with
XvMC support and loaded it up.

Eureka!  Mythfrontend played back a recording just fine, and CPU usage was at
35% compared to the typical 85%.  Just to make sure things were working, I
tried to play another show and disaster struck.  As soon as I tried to play the
second show, mythfrontend seg faults and I get this following error on my
command line:

Using XvMC version: 1.0
Using XV port 105
Unable to create XvMC Context
Changing from None to WatchingPreRecorded
Segmentation fault

Does anyone have any idea what this means?  And secondly, what I need to do to
resolve this?

Some stats about my system:
  - K6-3 450Mhz CPU, NVidia GF4 MX 440 Graphics, PVR-250 for tuner
  - Running MythTV 0.12

-----------------------

This is the GDB backtrace:

Starting program: /usr/local/bin/mythfrontend 
[New Thread 16384 (LWP 9248)]
2003-11-11 18:04:21 Enabled verbose msgs : important general
connecting to backend server: 127.0.0.1:6543
Could not connect to backend server
connecting to backend server: 127.0.0.1:6543
[New Thread 32769 (LWP 9274)]
[New Thread 16386 (LWP 9275)]
[New Thread 32771 (LWP 9276)]
[New Thread 49156 (LWP 9277)]
Input #0, mpeg, from '/storage/av/tv/1036_20031110230000_20031110233000.nuv':
  Stream #0.0: Video: mpegvideo_xvmc, 480x480, 29.97 fps, 6000 kb/s
  Stream #0.1: Audio: mp2, 48000 Hz, stereo, 384 kb/s
Opening OSS audio device '/dev/dsp'.
audio device cannot report buffer state accurately,
audio/video sync will be bad, continuing anyway
[New Thread 65541 (LWP 9278)]
Over/underscanning. V: 0.000000, H: 0.000000, XOff: 0, YOff: 20
Using XvMC version: 1.0
Using XV port 105
[New Thread 81926 (LWP 9279)]
Changing from None to WatchingPreRecorded
2003-11-11 18:05:19 prebuffering pause
Changing from WatchingPreRecorded to None
Changing from None to None
[New Thread 98311 (LWP 9280)]
[New Thread 114696 (LWP 9281)]
[New Thread 131081 (LWP 9282)]
Input #0, mpeg, from '/storage/av/tv/1005_20031102230500_20031103000500.nuv':
  Stream #0.0: Video: mpegvideo_xvmc, 480x480, 29.97 fps, 6000 kb/s
  Stream #0.1: Audio: mp2, 48000 Hz, stereo, 384 kb/s
Opening OSS audio device '/dev/dsp'.
audio device cannot report buffer state accurately,
audio/video sync will be bad, continuing anyway
[New Thread 147466 (LWP 9283)]
Over/underscanning. V: 0.000000, H: 0.000000, XOff: 0, YOff: 20
Using XvMC version: 1.0
Using XV port 105
NV: could not map register space on /dev/nvidia0 at 0xec000002 for 0x1000 bytes (Invalid argument)
Unable to create XvMC Context
[New Thread 163851 (LWP 9284)]
Changing from None to WatchingPreRecorded

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 114696 (LWP 9281)]
0x0819fa2c in get_avf_buffer_xvmc(AVCodecContext*, AVFrame*) (c=0x871a0f8, 
    pic=0x876aedc) at avformatdecoder.cpp:579
579     avformatdecoder.cpp: No such file or directory.
        in avformatdecoder.cpp
(gdb) thread apply all bt full

Thread 12 (Thread 163851 (LWP 9284)):
#0  0x40beb6d6 in nanosleep () from /lib/libc.so.6
No symbol table info available.
#1  0x00000000 in ?? ()
No symbol table info available.

Thread 11 (Thread 147466 (LWP 9283)):
#0  0x40beb6d6 in nanosleep () from /lib/libc.so.6
No symbol table info available.
#1  0x00000000 in ?? ()
No symbol table info available.

Thread 10 (Thread 131081 (LWP 9282)):
#0  0x40beb6d6 in nanosleep () from /lib/libc.so.6
No symbol table info available.
#1  0x00000000 in ?? ()
No symbol table info available.

Thread 9 (Thread 114696 (LWP 9281)):
#0  0x0819fa2c in get_avf_buffer_xvmc(AVCodecContext*, AVFrame*) (c=0x871a0f8, 
    pic=0x876aedc) at avformatdecoder.cpp:579
        nd = (AvFormatDecoder *) 0x852e1c8
        frame = (VideoFrame *) 0x875d218
        render = (xvmc_render_state_t *) 0x0
#1  0x081fae08 in alloc_picture (s=0x876ae20, pic=0x876aedc, shared=0)
    at mpegvideo.c:251
        r = 1001
        big_mb_num = 962
        mb_array_size = 930
        i = 0
#2  0x081fd9fb in MPV_frame_start (s=0x876ae20, avctx=0x871a0f8)
    at mpegvideo.c:1019
        i = 0
        pic = (AVFrame *) 0x876aedc
#3  0x082a0d2f in mpeg_decode_slice (avctx=0x871a0f8, pict=0xbebdf90c, 
    start_code=0, buf=0xbebdf81c, buf_size=46549) at mpeg12.c:1942
        s1 = (Mpeg1Context *) 0x876ae20
        s = (MpegEncContext *) 0x876ae20
        ret = 141995552
        field_pic = 0
#4  0x082a267b in mpeg_decode_frame (avctx=0x871a0f8, data=0xbebdf90c, 
    data_size=0xbebdf9b0, buf=0x8adb550 "", buf_size=46728) at mpeg12.c:2533
        s = (Mpeg1Context *) 0x876ae20
        buf_end = (uint8_t *) 0x8ae6bd8 ""
        buf_ptr = (
    uint8_t *) 0x8adb603 "\032¥ñbÉ>¶©$\237[et×9\bÂqi\bªl%\232\222¢ò\024¤E\204&¤åqOJJ-#JDï#-'\027hB2\235¥#IEÌ!\031Å\204i\031EÅ)H\235å)IιKI\b\002l\036G³Z\211¤\214\002 \021å\025Ï4%óN/)\nJ\233ÊR\223\213ÊR\221+ÈR1\027\020\215\"v\021¥\"W\224\205\"W\220\215'+ÊR\021;\230R1\026\024¥\"V\224¤\"+\221 EuIS\224"
        ret = 139676816
        start_code = 257
        input_size = 46549
        picture = (AVFrame *) 0xbebdf90c
        s2 = (MpegEncContext *) 0x876ae20
#5  0x081f95b3 in avcodec_decode_video (avctx=0x871a0f8, picture=0xbebdf90c, 
    got_picture_ptr=0xbebdf9b0, buf=0x87cdde0 "", buf_size=2020) at utils.c:367
        ret = 212
#6  0x081a065a in AvFormatDecoder::GetFrame(int) (this=0x852e1c8, onlyvideo=0)
    at avformatdecoder.cpp:943
        context = (AVCodecContext *) 0x871a0f8
        mpa_pic = {data = {0x2ad02b9 <Address 0x2ad02b9 out of bounds>, 
    0x2df02fa <Address 0x2df02fa out of bounds>, 
    0x24f024a <Address 0x24f024a out of bounds>, 
    0x11c0100 <Address 0x11c0100 out of bounds>}, linesize = {-5898355, 
    -37749320, -65668071, -54985550}, base = {
    0xfff5ffde <Address 0xfff5ffde out of bounds>, 
    0x30a02fc <Address 0x30a02fc out of bounds>, 
    0x3e803fd <Address 0x3e803fd out of bounds>, 
    0x349036a <Address 0x349036a out of bounds>}, key_frame = 31982055, 
  pict_type = -9175207, pts = -192250192279962329, 
  coded_picture_number = -6881366, display_picture_number = 18809108, 
  quality = 2.70003589e-38, age = 15007973, reference = 16580886, 
  qscale_table = 0x7b0096 <Address 0x7b0096 out of bounds>, 
  qstride = -7733369, 
  mbskip_table = 0xff3cff2c <Address 0xff3cff2c out of bounds>, 
  opaque = 0xffedfff7, error = {185494883005235530, 322012282568704970, 
    177332035713106951, 18444773688758698236}, type = -9765015, 
  repeat_pict = -9437305, qscale_type = -2621462}
        gotpicture = 0
        picframe = (VideoFrame *) 0x1e0
        curstream = (AVStream *) 0x871a0f0
        pkt = (AVPacket *) 0x87620f0
        len = 2020
        ret = 212
        ptr = (unsigned char *) 0x87cdde0 ""
        samples = {-775, -743, -1504, -1482, -1657, -1670, -995, -993, 72, 81, 
  649, 617, 312, 286, -514, -492, -1117, -1118, -1050, -1088, -364, -351, 398, 
  441, 620, 614, 163, 162, -509, -462, -716, -703, -187, -217, 630, 646, 1020, 
  1051, 639, 611, -314, -337, -1182, -1156, -1239, -1248, -500, -540, 137, 
  169, -41, 26, -823, -832, -1534, -1575, -1647, -1634, -1063, -1032, -218, 
  -200, 347, 375, 517, 519, 364, 311, -190, -221, -1041, -1001, -1707, -1663, 
  -1669, -1668, -766, -786, 428, 397, 835, 818, 205, 249, -388, -315, -144, 
  -132, 402, 354, 516, 486, 179, 202, -363, -307, -802, -746, -745, -727, 
  -357, -378, -378, -394, -1050, -1028, -1727, -1684, -1687, -1653, -808, 
  -807, 359, 328, 1044, 1022, 1004, 1017, 584, 597, 51, 36, -478, -475, -687, 
  -643, -505, -484, -458, -489, -871, -872, -1333, -1254, -1403, -1323, -1152, 
  -1146, -835, -874, -664, -685, -745, -726, -863, -823, -726, -709, -493, 
  -520, -462, -498, -500, -514, -478, -482, -723, -712, -1296, -1252, -1544, 
  -1509, -1072, -1090, -413, -445, -290, -283, -792, -753, -1398, -1360, 
  -1423, -1415, -653, -678, 355, 342, 914, 933, 884, 900, 431, 436, -250, 
  -230, -728, -713, -638, -642, -279, -263, -248, -215, -597, -576, -835, 
  -825, -632, -645...}
        data_size = 0
        temppts = 276412580441621665
        gotvideo = false
        allowedquit = false
        storevideoframes = false
#7  0x080ff48f in NuppelVideoPlayer::GetFrame(int, bool) (this=0x8534b00, 
    onlyvideo=0, unsafe=false) at NuppelVideoPlayer.cpp:592
No locals.
#8  0x08101bdd in NuppelVideoPlayer::StartPlaying() (this=0x8534b00)
    at NuppelVideoPlayer.cpp:1428
        seeks = 64
        lockit = {mtx = 0x8898f58}
        output_video = 163851
        pausecheck = 0
#9  0x0817afd3 in SpawnDecode(void*) (param=0x8534b00) at tv_play.cpp:67
        nvp = (NuppelVideoPlayer *) 0x8534b00
#10 0x40a01c3e in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#11 0x40a01cbb in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.

Thread 8 (Thread 98311 (LWP 9280)):
#0  0x40beb6d6 in nanosleep () from /lib/libc.so.6
No symbol table info available.
#1  0x00000000 in ?? ()
No symbol table info available.

Thread 2 (Thread 32769 (LWP 9274)):
#0  0x40c0f04c in poll () from /lib/libc.so.6
No symbol table info available.
#1  0x40a01988 in __pthread_manager () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a01b53 in __pthread_manager_event () from /lib/libpthread.so.0
No symbol table info available.

Thread 1 (Thread 16384 (LWP 9248)):
#0  0x40beb6d6 in nanosleep () from /lib/libc.so.6
No symbol table info available.
#1  0x00000000 in ?? ()
No symbol table info available.
0x0819fa2c      579     in avformatdecoder.cpp

---------------------------------------------------

Thanks for all the help and the great program!

Chris Wieringa
cwieri39 at calvin.edu 



_______________________________________________
mythtv-dev mailing list
mythtv-dev at mythtv.org
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev



More information about the mythtv-dev mailing list