[mythtv-users] mythcommflag core dumping

Don Lewis dl-mythtv at catspoiler.org
Tue Oct 11 21:30:56 UTC 2011


On 11 Oct, To: Discussion about MythTV wrote:
> I've been seeing quite a few mythcommflag failures recently.  This
> coredump seems to be typical:
> 
> (gdb) bt
> #0  0x000000000040b517 in ClassicLogoDetector::DetectEdges (this=0xd02040, 
>     frame=<value optimized out>, edges=0x7f92904c8010, edgeDiff=10)
>     at ClassicLogoDetector.cpp:537
> #1  0x000000000040c06e in ClassicLogoDetector::searchForLogo (
>     this=<value optimized out>, player=0xb8db50) at ClassicLogoDetector.cpp:132
> #2  0x000000000041e85c in ClassicCommDetector::go (this=0xb8d570)
>     at ClassicCommDetector.cpp:357
> #3  0x000000000045d418 in DoFlagCommercials (program_info=0x7fff25314a60, 
>     outputfilename=..., useDB=true) at main.cpp:612
> #4  FlagCommercials (program_info=0x7fff25314a60, outputfilename=..., useDB=
>     true) at main.cpp:840
> #5  0x000000000045ef6f in FlagCommercials (chanid=4049, starttime=..., 
>     outputfilename=..., useDB=true) at main.cpp:873
> #6  0x00000000004650bb in main (argc=5, argv=<value optimized out>)
>     at main.cpp:1351
> 
> (gdb) list
> 532	                continue;
> 533	
> 534	            pos = y * width + x;
> 535	            p = buf[pos];
> 536	
> 537	            if (( abs(buf[y * width + (x - r)] - p) >= edgeDiff) ||
> 538	                ( abs(buf[y * width + (x + r)] - p) >= edgeDiff))
> 539	            {
> 540	                edges[pos].horiz++;
> 541	                edgeCount++;
> 
> (gdb) print x
> $1 = 22
> (gdb) print y
> $2 = 22
> (gdb) print width
> $3 = 704
> (gdb) print r
> $4 = 2
> (gdb) print p
> Cannot access memory at address 0x3c96
> (gdb) print pos
> $5 = 15510
> 
> It's wierd that gdb can't print variable p because it's a just a local
> variable ... maybe some sort of interaction with optimization ...
> 
> (gdb) print buf[15510]
> Cannot access memory at address 0x3c96
> (gdb) print buf
> $6 = (unsigned char *) 0x0
> (gdb) print frame
> $7 = <value optimized out>

Tracked it a bit further ... buf really is a NULL pointer.

(gdb) up
#1  0x000000000040c06e in ClassicLogoDetector::searchForLogo (
    this=<value optimized out>, player=0xb8db50) at ClassicLogoDetector.cpp:132
132	            DetectEdges(vf, edgeCounts, edgeDiffs[i]);

(gdb) list
127	            }
128	
129	            if (!commDetector->fullSpeed)
130	                usleep(10000);
131	
132	            DetectEdges(vf, edgeCounts, edgeDiffs[i]);
133	
134	            seekFrame += seekIncrement;
135	            loops++;
136	

(gdb) print *vf
$9 = {codec = FMT_YV12, buf = 0x0, width = 528, height = 480, bpp = 12, size = 
    380162, frameNumber = 2692, timecode = 62178107, disp_timecode = 96288, 
  priv = {0x0, 0x0, 0x0, 0x0}, qscale_table = 0x0, qstride = 0, 
  interlaced_frame = 1, top_field_first = 1, repeat_pict = 0, forcekey = 0, 
  pitches = {528, 264, 264}, offsets = {0, 253440, 316800}, pix_fmt = 0}



More information about the mythtv-users mailing list