[mythtv] [BT] current-cvs frontend crash on recorded-shows screen

Jason Hoos jhoos at thwack.net
Fri Jan 16 03:10:39 EST 2004


> On Friday 16 January 2004 12:31 am, Derek Atkins wrote:
> > My wife was watching tv tonight while I was out and the frontend
> > crashed with a SEGV.  She said she was watching livetv, then went to
> > watch a recorded show, finished that, left it on the "play recorded
> > shows" screen for a while as she did other stuff, and then came back
> > to a crashed frontend.  I'm setup to use the PVR-350 output device.
> > Here is the backtrace...
> 
> Hmm..  Was it on the screen long enough for it to reach the 
> end of the 
> recording?


His backtrace looks very similar to one I was trying to figure out a week or
two ago, and in my case it was caused at the end of a recording.  I noticed
it after having recorded a one-minute test clip for other reasons; if I left
that clip selected on the playback screen, the frontend would crash 4 out of
5 times while trying to loop from the end to the beginning of the clip.  

I wasn't able to figure out the cause of the problem, but from what I did
see, it seemed like some thread deleted a buffer out from underneath the
'cmmx_argb323' function in playbackbox.cpp (called from updateVideo line 546
or so).  The interesting thing that I noticed was this - right before the
"convert" call, I put in a printf that displayed the current values of
"frame" and "frame->buf".  Right before the segfault occurs, the value that
got printed out for frame->buf matched what the backtrace said the  second
argument to mmx_argb323 was.  However, doing a 'print frame->buf' at the GDB
prompt after the segfault showed that frame->buf had been reset to NULL.

I just reran that clip and double-checked all this.  I've attached another
backtrace including the aforementioned 'print' if you want to look at it.

Jason
-------------- next part --------------
[mpeg2video @ 0x825b538]ac-tex damaged at 20 22
[mpeg2video @ 0x825b538]concealing errors
[mpeg2video @ 0x825b538]Warning MVs not available
[16384] playbackbox: frame=87ae9c8 frame->buf=46c36008, nvp->isPlaying=1

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 26739)]
0x40266ab9 in mmx_yuv2rgb (py=0x46d0e398 <Address 0x46d0e398 out of bounds>, 
    pu=0x46d4d0d0 <Address 0x46d4d0d0 out of bounds>, 
    pv=0x46d854d0 <Address 0x46d854d0 out of bounds>) at yuv2rgb.cpp:62
62          movd_m2r (*pu, mm0);                // mm0 = 00 00 00 00 u3 u2 u1 u0
(gdb)  thread apply all bt full

Thread 3 (Thread 16386 (LWP 26743)):
#0  0x4107e7cb in read () from /lib/i686/libpthread.so.0
No symbol table info available.
#1  0x412d730c in __JCR_LIST__ () from /usr/lib/liblirc_client.so.0
No symbol table info available.
#2  0x40720880 in LircClient::Process() (this=0x8242608) at lirc.cpp:58
        code = 0x0
        ir = 0x0
        ret = 0
#3  0x407039a0 in SpawnLirc (param=0x8229d30) at mythdialogs.cpp:38
        main_window = (MythMainWindow *) 0x8229d30
        config_file = {static null = {
    static null = <same as static member of an already seen type>, 
    d = 0x8187b40, static shared_null = 0x8187b40}, d = 0x8249080, 
  static shared_null = 0x8187b40}
        program = {static null = {
    static null = <same as static member of an already seen type>, 
    d = 0x8187b40, static shared_null = 0x8187b40}, d = 0x8236108, 
  static shared_null = 0x8187b40}
        cl = (class LircClient *) 0x8242608
#4  0x41079811 in pthread_start_thread () from /lib/i686/libpthread.so.0
No symbol table info available.
#5  0x41079915 in pthread_start_thread_event () from /lib/i686/libpthread.so.0
No symbol table info available.

Thread 2 (Thread 32769 (LWP 26742)):
#0  0x41275537 in poll () from /lib/i686/libc.so.6
No symbol table info available.
#1  0x4107896e in __pthread_manager () from /lib/i686/libpthread.so.0
No symbol table info available.
#2  0x41078bbb in __pthread_manager_event () from /lib/i686/libpthread.so.0
No symbol table info available.

Thread 1 (Thread 16384 (LWP 26739)):
#0  0x40266ab9 in mmx_yuv2rgb (
    py=0x46d0e398 <Address 0x46d0e398 out of bounds>, 
    pu=0x46d4d0d0 <Address 0x46d4d0d0 out of bounds>, 
    pv=0x46d854d0 <Address 0x46d854d0 out of bounds>) at yuv2rgb.cpp:62
        mmx_80w = {q = 36029346783166592, uq = 36029346783166592, d = {
    8388736, 8388736}, ud = {8388736, 8388736}, w = {128, 128, 128, 128}, 
  uw = {128, 128, 128, 128}, b = "\200\0\200\0\200\0\200", 
  ub = "\200\0\200\0\200\0\200", s = {1.17551229e-38, 1.17551229e-38}}
        mmx_U_green = {q = -901296628122651779, uq = 17545447445586899837, 
  d = {-209849475, -209849475}, ud = {4085117821, 4085117821}, w = {-3203, 
    -3203, -3203, -3203}, uw = {62333, 62333, 62333, 62333}, b = "}ó}ó}ó}ó", 
  ub = "}ó}ó}ó}ó", s = {-2.01200811e+31, -2.01200811e+31}}
        mmx_U_blue = {q = 4653133841191616659, uq = 4653133841191616659, d = {
    1083392147, 1083392147}, ud = {1083392147, 1083392147}, w = {16531, 16531, 
    16531, 16531}, uw = {16531, 16531, 16531, 16531}, 
  b = "\223@\223@\223@\223@", ub = "\223@\223@\223@\223@", s = {4.6016326, 
    4.6016326}}
        mmx_V_red = {q = 3680059998774375186, uq = 3680059998774375186, d = {
    856830738, 856830738}, ud = {856830738, 856830738}, w = {13074, 13074, 
    13074, 13074}, uw = {13074, 13074, 13074, 13074}, 
  b = "\0223\0223\0223\0223", ub = "\0223\0223\0223\0223", s = {
    3.40397222e-08, 3.40397222e-08}}
        mmx_V_green = {q = -1874370470539893252, uq = 16572373603169658364, 
  d = {-436410884, -436410884}, ud = {3858556412, 3858556412}, w = {-6660, 
    -6660, -6660, -6660}, uw = {58876, 58876, 58876, 58876}, b = "üåüåüåüå", 
  ub = "üåüåüåüå", s = {-1.49284852e+23, -1.49284852e+23}}
        mmx_10w = {q = 1157442765409226768, uq = 1157442765409226768, d = {
    269488144, 269488144}, ud = {269488144, 269488144}, w = {4112, 4112, 4112, 
    4112}, uw = {4112, 4112, 4112, 4112}, 
  b = "\020\020\020\020\020\020\020\020", 
  ub = "\020\020\020\020\020\020\020\020", s = {2.84113667e-29, 
    2.84113667e-29}}
        mmx_00ffw = {q = 71777214294589695, uq = 71777214294589695, d = {
    16711935, 16711935}, ud = {16711935, 16711935}, w = {255, 255, 255, 255}, 
  uw = {255, 255, 255, 255}, b = "ÿ\0ÿ\0ÿ\0ÿ", ub = "ÿ\0ÿ\0ÿ\0ÿ", s = {
    2.34184089e-38, 2.34184089e-38}}
        mmx_Y_coeff = {q = 2683904856074167615, uq = 2683904856074167615, d = {
    624895295, 624895295}, ud = {624895295, 624895295}, w = {9535, 9535, 9535, 
    9535}, uw = {9535, 9535, 9535, 9535}, b = "?%?%?%?%", ub = "?%?%?%?%", 
  s = {1.65792287e-16, 1.65792287e-16}}
#1  0x40266a16 in yuv420_argb32 (image=0x4adf4e48 "", 
    py=0x46d0e398 <Address 0x46d0e398 out of bounds>, 
    pu=0x46d4d0d0 <Address 0x46d4d0d0 out of bounds>, 
    pv=0x46d854d0 <Address 0x46d854d0 out of bounds>, width=160, height=29, 
    rgb_stride=0, y_stride=0, uv_stride=0, cpu=1) at yuv2rgb.cpp:247
        i = 14
#2  0x402661a3 in mmx_argb32 (image=0x4aa94008 "\002", 
    py=0x46c36008 <Address 0x46c36008 out of bounds>, 
    pu=0x46d17008 <Address 0x46d17008 out of bounds>, 
    pv=0x46d4f408 <Address 0x46d4f408 out of bounds>, width=1280, height=720, 
    rgb_stride=5120, y_stride=1280, uv_stride=640) at yuv2rgb.cpp:301
No locals.
#3  0x0807bb85 in PlaybackBox::updateVideo(QPainter*) (this=0xbfffe960, 
    p=0xbfffe3e0) at playbackbox.cpp:546
        w = 1280
        frame = (VideoFrame *) 0x87ae9c8
        buf = (unsigned char *) 0x46c36008 <Address 0x46c36008 out of bounds>
        convert = 0x40266178 <mmx_argb32>
        img = {data = 0xbfffe3e0}
        h = 720
        outputbuf = (unsigned char *) 0x4aa94008 "\002"
#4  0x0807aa55 in PlaybackBox::paintEvent(QPaintEvent*) (this=0xbfffe960, 
    e=0xbfffe6f0) at playbackbox.cpp:317
        r = {x1 = 1464, y1 = 359, x2 = 1847, y2 = 465}
        p = {<Qt> = {static color0 = @0x41070ac0, static color1 = @0x41070ac8, 
    static black = @0x41070ad0, static white = @0x41070ad8, 
    static darkGray = @0x41070ae0, static gray = @0x41070ae8, 
    static lightGray = @0x41070af0, static red = @0x41070af8, 
    static green = @0x41070b00, static blue = @0x41070b08, 
    static cyan = @0x41070b10, static magenta = @0x41070b18, 
    static yellow = @0x41070b20, static darkRed = @0x41070b28, 
    static darkGreen = @0x41070b30, static darkBlue = @0x41070b38, 
    static darkCyan = @0x41070b40, static darkMagenta = @0x41070b48, 
    static darkYellow = @0x41070b50, static arrowCursor = @0x4106f4a0, 
    static upArrowCursor = @0x4106f4a4, static crossCursor = @0x4106f4a8, 
    static waitCursor = @0x4106f4ac, static ibeamCursor = @0x4106f4b0, 
    static sizeVerCursor = @0x4106f4b4, static sizeHorCursor = @0x4106f4b8, 
    static sizeBDiagCursor = @0x4106f4bc, 
    static sizeFDiagCursor = @0x4106f4c0, static sizeAllCursor = @0x4106f4c4, 
    static blankCursor = @0x4106f4c8, static splitVCursor = @0x4106f4d0, 
    static splitHCursor = @0x4106f4cc, 
    static pointingHandCursor = @0x4106f4d4, 
    static forbiddenCursor = @0x4106f4d8, 
    static whatsThisCursor = @0x4106f4dc}, flags = 33281, d = 0x0, 
  pdev = 0xbfffe988, bg_col = {static color_init = true, 
    static globals_init = true, static colormodel = d32, d = {
      argb = 4287927444, d8 = {argb = 4287927444, pix = 178 '²', 
        invalid = 148 '\224', dirty = 0 '\0', direct = 0 '\0'}, d32 = {
        argb = 4287927444, pix = 38066}}}, bg_mode = 0 '\0', rop = 0 '\0', 
  pu = 208 'Ð', bro = {xp = 0, yp = 0}, cfont = {d = 0x822f6b8}, pfont = 0x0, 
  cpen = {<Qt> = {static color0 = @0x41070ac0, static color1 = @0x41070ac8, 
      static black = @0x41070ad0, static white = @0x41070ad8, 
      static darkGray = @0x41070ae0, static gray = @0x41070ae8, 
      static lightGray = @0x41070af0, static red = @0x41070af8, 
      static green = @0x41070b00, static blue = @0x41070b08, 
      static cyan = @0x41070b10, static magenta = @0x41070b18, 
      static yellow = @0x41070b20, static darkRed = @0x41070b28, 
      static darkGreen = @0x41070b30, static darkBlue = @0x41070b38, 
      static darkCyan = @0x41070b40, static darkMagenta = @0x41070b48, 
      static darkYellow = @0x41070b50, static arrowCursor = @0x4106f4a0, 
      static upArrowCursor = @0x4106f4a4, static crossCursor = @0x4106f4a8, 
      static waitCursor = @0x4106f4ac, static ibeamCursor = @0x4106f4b0, 
      static sizeVerCursor = @0x4106f4b4, static sizeHorCursor = @0x4106f4b8, 
      static sizeBDiagCursor = @0x4106f4bc, 
      static sizeFDiagCursor = @0x4106f4c0, 
      static sizeAllCursor = @0x4106f4c4, static blankCursor = @0x4106f4c8, 
      static splitVCursor = @0x4106f4d0, static splitHCursor = @0x4106f4cc, 
      static pointingHandCursor = @0x4106f4d4, 
      static forbiddenCursor = @0x4106f4d8, 
      static whatsThisCursor = @0x4106f4dc}, data = 0x42d035f8}, 
  cbrush = {<Qt> = {static color0 = @0x41070ac0, static color1 = @0x41070ac8, 
      static black = @0x41070ad0, static white = @0x41070ad8, 
      static darkGray = @0x41070ae0, static gray = @0x41070ae8, 
      static lightGray = @0x41070af0, static red = @0x41070af8, 
      static green = @0x41070b00, static blue = @0x41070b08, 
      static cyan = @0x41070b10, static magenta = @0x41070b18, 
      static yellow = @0x41070b20, static darkRed = @0x41070b28, 
      static darkGreen = @0x41070b30, static darkBlue = @0x41070b38, 
      static darkCyan = @0x41070b40, static darkMagenta = @0x41070b48, 
      static darkYellow = @0x41070b50, static arrowCursor = @0x4106f4a0, 
      static upArrowCursor = @0x4106f4a4, static crossCursor = @0x4106f4a8, 
      static waitCursor = @0x4106f4ac, static ibeamCursor = @0x4106f4b0, 
      static sizeVerCursor = @0x4106f4b4, static sizeHorCursor = @0x4106f4b8, 
      static sizeBDiagCursor = @0x4106f4bc, 
      static sizeFDiagCursor = @0x4106f4c0, 
      static sizeAllCursor = @0x4106f4c4, static blankCursor = @0x4106f4c8, 
      static splitVCursor = @0x4106f4d0, static splitHCursor = @0x4106f4cc, 
      static pointingHandCursor = @0x4106f4d4, 
      static forbiddenCursor = @0x4106f4d8, 
      static whatsThisCursor = @0x4106f4dc}, data = 0x8210d88}, crgn = {
    data = 0x825a4c8}, tabstops = 0, tabarray = 0x0, tabarraylen = 0, 
  block_ext = false, wx = 0, wy = 0, ww = 1920, wh = 540, vx = 0, vy = 0, 
  vw = 1920, vh = 540, wxmat = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, 
    _dx = 0, _dy = 0}, xmat = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, 
    _dx = 0, _dy = 0}, ixmat = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, 
    _dx = 0, _dy = 0}, txop = 0, txinv = false, penRef = 0x8195448, 
  brushRef = 0x8194b18, ps_stack = 0x0, wm_stack = 0x0, dpy = 0x818da20, 
  scrn = 0, hd = 10486501, rendhd = 10486616, gc = 0x825bbd0, 
  gc_brush = 0x825bae0, curPt = {xp = 0, yp = 0}, clip_serial = 1848}
#5  0x40c95a17 in QWidget::event(QEvent*) ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
No symbol table info available.
(gdb) print *frame
No symbol "frame" in current context.
(gdb) up
#1  0x40266a16 in yuv420_argb32 (image=0x4adf4e48 "", 
    py=0x46d0e398 <Address 0x46d0e398 out of bounds>, 
    pu=0x46d4d0d0 <Address 0x46d4d0d0 out of bounds>, 
    pv=0x46d854d0 <Address 0x46d854d0 out of bounds>, width=160, height=29, 
    rgb_stride=0, y_stride=0, uv_stride=0, cpu=1) at yuv2rgb.cpp:247
247                 mmx_yuv2rgb (py, pu, pv);
(gdb) up
#2  0x402661a3 in mmx_argb32 (image=0x4aa94008 "\002", 
    py=0x46c36008 <Address 0x46c36008 out of bounds>, 
    pu=0x46d17008 <Address 0x46d17008 out of bounds>, 
    pv=0x46d4f408 <Address 0x46d4f408 out of bounds>, width=1280, height=720, 
    rgb_stride=5120, y_stride=1280, uv_stride=640) at yuv2rgb.cpp:301
301         yuv420_argb32 (image, py, pu, pv, width, height,
(gdb) up
#3  0x0807bb85 in PlaybackBox::updateVideo(QPainter*) (this=0xbfffe960, 
    p=0xbfffe3e0) at playbackbox.cpp:546
546             convert(outputbuf, buf, buf + (w * h), buf + (w * h * 5 / 4), w, h, 
(gdb) print *frame
$1 = {codec = FMT_YV12, buf = 0x0, height = 720, width = 1280, bpp = 12, 
  size = 1382400, frameNumber = 0, timecode = 82315276, priv = {
    0x7a9dc922 <Address 0x7a9dc922 out of bounds>, 
    0x55741421 <Address 0x55741421 out of bounds>, 0x0, 0x0}, 
  qscale_table = 0x0, qstride = 0}



More information about the mythtv-dev mailing list