[mythtv] crash mythfrontend (OSDTypeEditSlider::Reinit)

Jim Westfall jwestfall at surrealistic.net
Sat Mar 5 23:12:23 UTC 2005


The crash is in frame #10
(gdb) f 10
#10 0xb7c75d1c in OSDTypeEditSlider::Reinit(float, float, float, float) (
    this=0xb41faad0, wchange=inf, hchange=inf, wmult=3, hmult=2.25)
    at osdtypes.cpp:1223
1223        m_drawMap = new unsigned char[m_drawwidth + 1];
(gdb) print m_drawwidth
$2 = -2147483648

The underlying problem looks like NuppelVideoPlayer can create a new 
OSD object with bogus height/width data as seen in the backtrace below this 
one.  This is causing m_hmult and m_wmult to be zero.  When OSDSet::Reinit 
is called its breaking the following code.

    float wchange = wmult / m_wmult;
    float hchange = hmult / m_hmult;

resulting in wchange/hchange both being inf.

jim

(gdb)  bt full
#0  0xb69ef7b1 in kill () from /lib/libc.so.6
No symbol table info available.
#1  0xb6bbb729 in pthread_kill () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb6bbba7d in raise () from /lib/libpthread.so.0
No symbol table info available.
#3  0xb69ef404 in raise () from /lib/libc.so.6
No symbol table info available.
#4  0xb69f0a58 in abort () from /lib/libc.so.6
No symbol table info available.
#5  0xb6b8b103 in __cxa_call_unexpected ()
   from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#6  0xb6b8b136 in std::terminate() ()
   from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#7  0xb6b8b281 in __cxa_throw ()
   from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#8  0xb6b8b48d in operator new(unsigned) ()
   from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#9  0xb6b8b54b in operator new[](unsigned) ()
   from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/libstdc++.so.5
No symbol table info available.
#10 0xb7c75d1c in OSDTypeEditSlider::Reinit(float, float, float, float) (
    this=0xb41faad0, wchange=inf, hchange=inf, wmult=3, hmult=2.25)
    at osdtypes.cpp:1223
        width = -2147483648
        height = -2147483648
        x = -2147483648
        y = -2147483648
#11 0xb7c6fe01 in OSDSet::Reinit(int, int, int, int, int, int, float, 
float, in$
screenwidth=1920, screenheight=1088, xoff=0, yoff=0,
    displaywidth=1920, displayheight=1080, wmult=3, hmult=2.25, 
frint=33366)
    at osdtypes.cpp:192
        item = (OSDTypeEditSlider *) 0xb41faad0
        item = (OSDTypeFillSlider *) 0x0
        item = (OSDTypePosSlider *) 0x0
        item = (OSDTypePositionImage *) 0x0
        item = (OSDTypeText *) 0x0
        item = (OSDTypePositionImage *) 0x0
        item = (OSDTypeText *) 0x0
        type = (class OSDType *) 0xb41faad0
        wchange = inf
        hchange = inf
        iter = 
{<iterator<std::random_access_iterator_tag,OSDType*,int,OSDType**,OSDType*&>> = {<No
data fields>}, _M_current = 0x8218a68}
#12 0xb7c5abbd in OSD::Reinit(int, int, int, int, int, int, int) (
    this=0xb63abd68, width=1920, height=1088, frint=33366, dispx=0, 
dispy=0,
    dispw=1920, disph=1080) at osd.cpp:232
        set = (class OSDSet *) 0xb41fa858
        fonts = {node = 0xb63abad0}
        sets = {node = 0xb41fa920}
#13 0xb7c43798 in NuppelVideoPlayer::ReinitOSD() (this=0x82fbe50)
    at NuppelVideoPlayer.cpp:458
        dispx = 0
        dispy = 0
        dispw = 1920
        disph = 1080
#14 0xb7c43812 in NuppelVideoPlayer::ReinitVideo() (this=0x82fbe50)
    at NuppelVideoPlayer.cpp:469
No locals.
#15 0xb7c443fd in NuppelVideoPlayer::SetVideoParams(int, int, double, int, float, FrameScanType,
bool) (this=0x82fbe50, width=1920, height=1088,
    fps=29.970029970029969, keyframedistance=15, aspect=1.77777779,
    scan=kScan_Detect, reinit=true) at NuppelVideoPlayer.cpp:564
No locals.
... 



(gdb)
#0  0xb69ef7b1 in kill () from /lib/libc.so.6
#1  0xb6bbb729 in pthread_kill () from /lib/libpthread.so.0
#2  0xb6bbba7d in raise () from /lib/libpthread.so.0
#3  0xb69ef404 in raise () from /lib/libc.so.6
#4  0xb69f0a58 in abort () from /lib/libc.so.6
#5  0xb7c5f9c3 in OSD::parseSlider(OSDSet*, QDomElement&) (this=0xb65990e0,
    container=0x82f6ea8, element=@0xbf1ff744) at osd.cpp:708
#6  0xb7c63c59 in OSD::parseContainer(QDomElement&) (this=0xb65990e0,
    element=@0xbf1ff844) at osd.cpp:1084
#7  0xb7c64921 in OSD::LoadTheme() (this=0xb65990e0) at osd.cpp:1166
#8  0xb7c5913a in OSD (this=0xb65990e0, width=0, height=0, frint=-1, dispx=0,
    dispy=0, dispw=0, disph=0) at osd.cpp:68
#9  0xb7c4ab1c in NuppelVideoPlayer::StartPlaying() (this=0x82b2600)
    at NuppelVideoPlayer.cpp:1816



More information about the mythtv-dev mailing list