Opened 8 years ago

Closed 8 years ago

#10089 closed Bug Report - Crash (Duplicate)

mythcommflag occasionally dumps core due to NULL pointer dereference in ClassicLogoDetector::DetectEdges()

Reported by: Don Lewis <dl-mythtv@…> Owned by: cpinkham
Priority: minor Milestone: unknown
Component: MythTV - Mythcommflag Version: 0.24.1
Severity: medium Keywords:
Cc: Ticket locked: no

Description

I'm seeing sporadic mythcommflag failures caused by it attempting to dereference a NULL pointer and dump core.

mythtv-0.24.1-275.fc14.x86_64 package from ATRPMS.

Please attach all output as a file in bug reports.
MythTV Version   : v0.24.1-55-g8bc2a66
MythTV Branch    : fixes/0.24
Network Protocol : 63
Library API      : 0.24.20110505-1
QT Version       : 4.7.3
Options compiled in:
 linux release using_alsa using_jack using_oss using_pulse using_pulseoutput using_backend using_bindings_perl using_bindings_python using_crystalhd using_dvb using_firewire using_frontend using_hdhomerun using_hdpvr using_iptv using_ivtv using_joystick_menu using_libfftw3 using_lirc using_mheg using_opengl_video using_opengl_vsync using_qtdbus using_qtwebkit using_v4l using_x11 using_xrandr using_xv using_xvmc using_xvmc_vld using_xvmcw using_bindings_perl using_bindings_python using_mythtranscode using_opengl using_vdpau using_ffmpeg_threads using_live using_mheg


(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
(gdb) print buf[15510]
Cannot access memory at address 0x3c96
(gdb) print buf
$6 = (unsigned char *) 0x0
(gdb) print frame
$7 = <value optimized out>

(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}

Change History (2)

comment:1 Changed 8 years ago by beirdo

Looks to be a dupe of #9581

comment:2 Changed 8 years ago by sphery

Resolution: Duplicate
Status: newclosed

Dup of #9581

Note: See TracTickets for help on using tickets.