[mythtv] Backend crashes when trying to display faulty .nuv (MPEG)

Quintesse * at palacio-cristal.com
Thu Oct 2 18:01:26 EDT 2003


I have a problem where recording two programs in a row will crash the
backend, this I still have to debug, but this messgae is about the
problems that appear when the recordings directory contains faulty .nuv
files that are the result of a crash in mid-recording.
 
The problem I debugged right now has to do with a crash when MythWeb
tries to ask the backend for the recording thumnails.
 
I tried the gdb command (thread apply all bt full) that is explained in
the HOWTO, but its output seems useless:
 
#0  0x403f117b in VIA_MPEGBeginPicture () from
/usr/X11R6/lib/libddmpeg.so
 
So I just did a backtrace which gave me this (hopefully slightly more
useful):
 
#0  0x403f117b in VIA_MPEGBeginPicture () from
/usr/X11R6/lib/libddmpeg.so
#1  0x403f02b3 in VIABeginPicture () from /usr/X11R6/lib/libddmpeg.so
#2  0x08273f61 in VIA_field_start (s=0x842ea90, avctx=0x8445958) at
viaslice.c:88
#3  0x0821c43e in mpeg_decode_slice (avctx=0x8445958, pict=0x45119490,
start_code=0,
    buf=0x451193a0, buf_size=66333) at mpeg12.c:1992
#4  0x0821daf1 in mpeg_decode_frame (avctx=0x8445958, data=0x45119490,
    data_size=0x45119534, buf=0x853b0c0 "", buf_size=66512) at
mpeg12.c:2533
#5  0x08179144 in avcodec_decode_video (avctx=0x8445958,
picture=0x45119490,
    got_picture_ptr=0x45119534, buf=0x84700f0 "", buf_size=2020) at
utils.c:367
#6  0x0814e2c2 in AvFormatDecoder::GetFrame(int) (this=0x8450460,
onlyvideo=1)
    at avformatdecoder.cpp:943
#7  0x080ee8a3 in NuppelVideoPlayer::GetFrame(int, bool)
(this=0x8450130, onlyvideo=1,
    unsafe=true) at NuppelVideoPlayer.cpp:586
#8  0x080f58e7 in NuppelVideoPlayer::GetScreenGrab(int, int&, int&,
int&) (
    this=0x8450130, secondsin=64, bufflen=@0x451397bc, vw=@0x4513976c,
vh=@0x45139768)
    at NuppelVideoPlayer.cpp:2531
#9  0x080cbc7e in TVRec::GetScreenGrab(ProgramInfo*, QString const&,
int, int&, int&, int&) (this=0x8420148, pginfo=0x843d538,
filename=@0x45139790, secondsin=64,
    bufferlen=@0x451397bc, video_width=@0x4513976c,
video_height=@0x45139768)
    at tv_rec.cpp:761
#10 0x0806e997 in EncoderLink::GetScreenGrab(ProgramInfo*, QString
const&, int, int&, int&, int&) (this=0x840e0a8, pginfo=0x843d538,
filename=@0x45139790, secondsin=64,
    bufferlen=@0x451397bc, video_width=@0x4513976c,
video_height=@0x45139768)
    at encoderlink.cpp:618
#11 0x08084a37 in MainServer::HandleGenPreviewPixmap(QStringList&,
PlaybackSock*) (
    this=0x842baf0, slist=@0x451398d0, pbs=0x842d0d8) at
mainserver.cpp:2008
#12 0x08075e71 in MainServer::ProcessRequest(QSocket*) (this=0x842baf0,
sock=0x842d1d8)
    at mainserver.cpp:295
#13 0x0808ab16 in ProcessRequestThread::run() (this=0x8429eb0) at
mainserver.cpp:60
#14 0x405cf72e in start_thread () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#15 0x40988332 in start_thread () from /lib/tls/libpthread.so.0

Of course, the actual problem is the fact that the .nuv file is corrupt
and will never display correctly, but I just want to start by making the
backend a bit more robust so it doesn't crash when it encounters
something it doesn't understand.
 
Isaac: do you think this is a bug in the MythTV code using the VIA HW
decoder or is it in the VIA code itself? If the latter do you think it's
possible to just catch an error like this? Unfortunately I don't know
anything about signal handling in Linux. (but willing to learn if you
tell me that catching the signal is the way to go here :-).
 
-Tako
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mythtv.org/pipermail/mythtv-dev/attachments/20031002/b132bd3f/attachment.html


More information about the mythtv-dev mailing list