[mythtv-commits] Ticket #2889: Backend crashes during what appears to be preview generation

MythTV mythtv at cvs.mythtv.org
Mon Jan 8 17:42:11 UTC 2007

#2889: Backend crashes during what appears to be preview generation
 Reporter:  michael.tiller at gmail.com  |       Owner:  ijr    
     Type:  defect                    |      Status:  new    
 Priority:  minor                     |   Milestone:  unknown
Component:  mythtv                    |     Version:  0.20   
 Severity:  medium                    |  
 My backend regularly crashed due to a floating point exception.  I'm using
 the latest SVN (12453) and running gdb to diagnose the problem.  Here is a
 stack trace when the SIGFPE occurs:

 #0  0xb5ed4597 in __divdi3 () from /lib/libgcc_s.so.1
 #1  0xb7540684 in av_reduce (dst_nom=0xaab564f4, dst_den=0xaab564f0,
 nom=0, den=0, max=1073741824) at rational.c:39
 #2  0xb72d255c in mpeg_decode_frame (avctx=0xaab564d0, data=0xad7077bc,
 data_size=0xad707658, buf=0xa913e008 "", buf_size=166352) at mpeg12.c:2141
 #3  0xb720d0b5 in avcodec_decode_video (avctx=0xaab564d0,
 picture=0xad7077bc, got_picture_ptr=0xad707658, buf=0xa913e008 "",
 buf_size=166352) at utils.c:903
 #4  0xb7aedf6b in AvFormatDecoder::GetFrame (this=0xaab40c00, onlyvideo=1)
 at avformatdecoder.cpp:3195
 #5  0xb7aa12fd in NuppelVideoPlayer::GetFrameNormal (this=0xaab02838,
 onlyvideo=1) at NuppelVideoPlayer.cpp:1224
 #6  0xb7aa5727 in NuppelVideoPlayer::GetFrame (this=0xaab02838,
 onlyvideo=1, unsafe=false) at NuppelVideoPlayer.cpp:1305
 #7  0xb7aaee1b in NuppelVideoPlayer::GetScreenGrab (this=0xaab02838,
 secondsin=64, bufflen=@0xad708170, vw=@0xad70816c, vh=@0xad708168,
 ar=@0xad708164) at NuppelVideoPlayer.cpp:5156
 #8  0xb794586d in PreviewGenerator::GetScreenGrab (pginfo=0xaab00d78,
 filename=@0xaab00da8, secondsin=64, bufferlen=@0xad708170,
 video_width=@0xad70816c, video_height=@0xad708168,
 video_aspect=@0xad708164) at previewgenerator.cpp:387
 #9  0x0809a7ce in MainServer::HandleGenPreviewPixmap (this=0x8214f20,
 slist=@0xad70831c, pbs=0x8225340) at mainserver.cpp:3561
 #10 0x080b37de in MainServer::ProcessRequestWork (this=0x8214f20,
 sock=0x823aeb0) at mainserver.cpp:503
 #11 0x080b57d2 in MainServer::ProcessRequest (this=0x8214f20,
 sock=0x823aeb0) at mainserver.cpp:303
 #12 0x080bdc52 in ProcessRequestThread::run (this=0x821d158) at
 #13 0xb6482101 in QThreadInstance::start () from /usr/lib/libqt-mt.so.3
 #14 0xb5fe6504 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
 #15 0xb5e6951e in clone () from /lib/tls/i686/cmov/libc.so.6

 The underlying problem is that I have an mpeg file (which I can provide if
 needed) that was captured using and HDHomerun.  My guess is that the file
 is corrupted somehow.  Myth does not seem to recognize the file is
 corrupted and instead attempts to work with the data.  A lack of checking
 in the code leads to a variety of problems (this division by zero is just
 the first issue...if you clear that up, lots of other NULL pointer issues
 start showing up).

 I don't know enough about the internals to figure out how to recognize the
 problem properly and deal with it (the lack of documentation about return
 values from functions is quite problematic for me as well).  I'll keep
 trying, but this is a pretty serious issue since it crashes the backend
 (and I'm pretty sure it crashes the frontend too although I have only
 anecdotal evidence to support this, no stack trace...yet).

 I'll try to put together a patch, but even if I succeed it will probably
 be a huge hack and not commitable.  I hope this helps.  Let me know if you
 need any other info (like the MPEG file that causes this...it's 803 Mb).

Ticket URL: <http://svn.mythtv.org/trac/ticket/2889>
MythTV <http://www.mythtv.org/>

More information about the mythtv-commits mailing list