[mythtv] XvMC crashing - gdb backtrace

Chris Wieringa cwieri39 at calvin.edu
Tue Nov 11 18:24:29 EST 2003


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 





More information about the mythtv-dev mailing list