[mythtv] Crash on missing icon

Bruce Markey bjm at lvcm.com
Wed Feb 5 15:50:39 EST 2003


Isaac Richards wrote:
...
> use that list for more off-topic discussions, like hardware, etc, and this 
> list can become a bit more development oriented.

While others are off discussing how they might use their spare
Commodore 64 to rip DVD's for their wives church group ;-),
I'm seeing a SEGVs if there isn't a channel icon file that
matches the path stored in the database. This shouldn't
happen but it did so their probably needs to be one more
check to be sure the file can be loaded or was successfully
loaded.

This happens for both local and remote frontends. It appears
that if the file isn't found locally it will try to get it
remotely. I was thinking of adding a QUERY_CHECKFILE before
trying to get the remote image but I doubt this is the most
elegant solution.

To reproduce, either modify an 'icon' value in the channel
table or move aside a channel icon file (for both frontend
and backend if separate machines) then restart myth so that
it isn't cached. Go to Schedule a Recording and scroll to
select to the channel with the missing icon.

--  bjm


(gdb) run
Starting program: /usr/local/bin/mythfrontend
[New Thread 1024 (LWP 32398)]
connecting to backend server: mythserv:6543

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 32398)]
0x4035bbcf in QImage::operator= () from /usr/lib/libqt-mt.so.3
(gdb) bt full
#0  0x4035bbcf in QImage::operator= () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#1  0x080985d1 in ChannelInfo::LoadIcon (this=0x83222ec) at 
infostructs.cpp:30
         url = {static null = {
     static null = <same as static member of an already seen type>,
     d = 0x82c7bb8, static shared_null = 0x82c7bb8}, d = 0x8321848,
   static shared_null = 0x82c7bb8}
         this = (ChannelInfo *) 0x83222ec
         screenheight = 600
         screenwidth = 800
         wmult = 1
         hmult = 1
         tempimage = {data = 0x8321800}
#2  0x0809297f in GuideGrid::updateTopInfo (this=0xbfffec64)
     at guidegrid.cpp:1726
         this = (GuideGrid *) 0xbfffec64
         pginfo = (ProgramInfo *) 0x833c060
         recordtype = NotRecording
         chanNum = 9
         chinfo = (ChannelInfo *) 0x83222ec
#3  0x0808ae38 in GuideGrid::paintEvent (this=0xbfffec64, e=0xbfffea84)
     at guidegrid.cpp:834
         this = (GuideGrid *) 0xbfffec64
---Type <return> to continue, or q <return> to quit---
         r = {x1 = 0, y1 = 0, x2 = 799, y2 = 563}
         p = {<Qt> = {static color0 = @0x406e4420, static color1 = 
@0x406e4428,
     static black = @0x406e4430, static white = @0x406e4438,
     static darkGray = @0x406e4440, static gray = @0x406e4448,
     static lightGray = @0x406e4450, static red = @0x406e4458,
     static green = @0x406e4460, static blue = @0x406e4468,
     static cyan = @0x406e4470, static magenta = @0x406e4478,
     static yellow = @0x406e4480, static darkRed = @0x406e4488,
     static darkGreen = @0x406e4490, static darkBlue = @0x406e4498,
     static darkCyan = @0x406e44a0, static darkMagenta = @0x406e44a8,
     static darkYellow = @0x406e44b0, static arrowCursor = @0x406e2d00,
     static upArrowCursor = @0x406e2d08, static crossCursor = @0x406e2d10,
     static waitCursor = @0x406e2d18, static ibeamCursor = @0x406e2d20,
     static sizeVerCursor = @0x406e2d28, static sizeHorCursor = @0x406e2d30,
     static sizeBDiagCursor = @0x406e2d38,
     static sizeFDiagCursor = @0x406e2d40, static sizeAllCursor = 
@0x406e2d48,
     static blankCursor = @0x406e2d50, static splitVCursor = @0x406e2d60,
     static splitHCursor = @0x406e2d58,
     static pointingHandCursor = @0x406e2d68,
     static forbiddenCursor = @0x406e2d70,
     static whatsThisCursor = @0x406e2d78}, flags = 33281, d = 0x0,
   pdev = 0xbfffec8c, bg_col = {static color_init = true,
     static globals_init = true, static colormodel = d32, d = {
---Type <return> to continue, or q <return> to quit---
       argb = 4282541972, d8 = {argb = 4282541972, pix = 148 '\224',
         invalid = 103 'g', dirty = 66 'B', direct = 0 '\0'}, d32 = {
         argb = 4282541972, pix = 4351892}}}, bg_mode = 0 '\0', rop = 0 
'\0',
   pu = 255 '?', bro = {xp = 0, yp = 0}, cfont = {d = 0x833a218}, pfont 
= 0x0,
   cpen = {<Qt> = {static color0 = @0x406e4420, static color1 = @0x406e4428,
       static black = @0x406e4430, static white = @0x406e4438,
       static darkGray = @0x406e4440, static gray = @0x406e4448,
       static lightGray = @0x406e4450, static red = @0x406e4458,
       static green = @0x406e4460, static blue = @0x406e4468,
       static cyan = @0x406e4470, static magenta = @0x406e4478,
       static yellow = @0x406e4480, static darkRed = @0x406e4488,
       static darkGreen = @0x406e4490, static darkBlue = @0x406e4498,
       static darkCyan = @0x406e44a0, static darkMagenta = @0x406e44a8,
       static darkYellow = @0x406e44b0, static arrowCursor = @0x406e2d00,
       static upArrowCursor = @0x406e2d08, static crossCursor = @0x406e2d10,
       static waitCursor = @0x406e2d18, static ibeamCursor = @0x406e2d20,
       static sizeVerCursor = @0x406e2d28, static sizeHorCursor = 
@0x406e2d30,
       static sizeBDiagCursor = @0x406e2d38,
       static sizeFDiagCursor = @0x406e2d40,
       static sizeAllCursor = @0x406e2d48, static blankCursor = @0x406e2d50,
       static splitVCursor = @0x406e2d60, static splitHCursor = @0x406e2d58,
       static pointingHandCursor = @0x406e2d68,
       static forbiddenCursor = @0x406e2d70,
---Type <return> to continue, or q <return> to quit---
       static whatsThisCursor = @0x406e2d78}, data = 0x833b950},
   cbrush = {<Qt> = {static color0 = @0x406e4420, static color1 = 
@0x406e4428,
       static black = @0x406e4430, static white = @0x406e4438,
       static darkGray = @0x406e4440, static gray = @0x406e4448,
       static lightGray = @0x406e4450, static red = @0x406e4458,
       static green = @0x406e4460, static blue = @0x406e4468,
       static cyan = @0x406e4470, static magenta = @0x406e4478,
       static yellow = @0x406e4480, static darkRed = @0x406e4488,
       static darkGreen = @0x406e4490, static darkBlue = @0x406e4498,
       static darkCyan = @0x406e44a0, static darkMagenta = @0x406e44a8,
       static darkYellow = @0x406e44b0, static arrowCursor = @0x406e2d00,
       static upArrowCursor = @0x406e2d08, static crossCursor = @0x406e2d10,
       static waitCursor = @0x406e2d18, static ibeamCursor = @0x406e2d20,
       static sizeVerCursor = @0x406e2d28, static sizeHorCursor = 
@0x406e2d30,
       static sizeBDiagCursor = @0x406e2d38,
       static sizeFDiagCursor = @0x406e2d40,
       static sizeAllCursor = @0x406e2d48, static blankCursor = @0x406e2d50,
       static splitVCursor = @0x406e2d60, static splitHCursor = @0x406e2d58,
       static pointingHandCursor = @0x406e2d68,
       static forbiddenCursor = @0x406e2d70,
       static whatsThisCursor = @0x406e2d78}, data = 0x82edc50}, crgn = {
     data = 0x8320b78}, tabstops = 0, tabarray = 0x0, tabarraylen = 0,
   block_ext = false, wx = 0, wy = 0, ww = 800, wh = 600, vx = 0, vy = 0,
---Type <return> to continue, or q <return> to quit---
   vw = 800, vh = 600, wxmat = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1,
     _dx = 0, _dy = 0}, xmat = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1,
     _dx = 0, _dy = 0}, ixmat = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1,
     _dx = 0, _dy = 0}, txop = 0, txinv = false, penRef = 0x82df2a0,
   brushRef = 0x82deb68, ps_stack = 0x0, wm_stack = 0x0, dpy = 0x82c9fd0,
   scrn = 0, hd = 44040494, rendhd = 44040495, gc = 0x8325e40,
   gc_brush = 0x8321c18, curPt = {xp = 0, yp = 0}, clip_serial = 294}
#4  0x403aded5 in QWidget::event () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#5  0x4033c773 in QApplication::internalNotify () from 
/usr/lib/libqt-mt.so.3
No symbol table info available.
#6  0x4033c614 in QApplication::notify () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#7  0x4031c25c in QWidget::repaint () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#8  0x4033cfd7 in QApplication::sendPostedEvents () from 
/usr/lib/libqt-mt.so.3 No symbol table info available.
#9  0x4033cea7 in QApplication::sendPostedEvents () from 
/usr/lib/libqt-mt.so.3 No symbol table info available.
#10 0x402eb231 in QApplication::processNextEvent () from 
/usr/lib/libqt-mt.so.3 No symbol table info available.
#11 0x4033dbbf in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#12 0x4049f231 in QDialog::exec () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#13 0x080828c1 in RunProgramGuide (startchannel=
       {static null = {static null = <same as static member of an 
already seen type>, d = 0x82c7bb8, static shared_null = 0x82c7bb8}, d = 
0xbffff300, static shared_null = 0x82c7bb8}, thread=false, player=0x0) 
at guidegrid.cpp:50
         startchannel = (QString *) 0xbffff300
         chanstr = {static null = {
     static null = <same as static member of an already seen type>,
     d = 0x82c7bb8, static shared_null = 0x82c7bb8}, d = 0x82c7bb8,
   static shared_null = 0x82c7bb8}
         gg = {<MythDialog> = {<QDialog> = {<QWidget> = {<QObject> = 
{<Qt> = {
             static color0 = @0x406e4420, static color1 = @0x406e4428,
             static black = @0x406e4430, static white = @0x406e4438,
             static darkGray = @0x406e4440, static gray = @0x406e4448,
             static lightGray = @0x406e4450, static red = @0x406e4458,
             static green = @0x406e4460, static blue = @0x406e4468,
             static cyan = @0x406e4470, static magenta = @0x406e4478,
             static yellow = @0x406e4480, static darkRed = @0x406e4488,
             static darkGreen = @0x406e4490, static darkBlue = @0x406e4498,
             static darkCyan = @0x406e44a0, static darkMagenta = 
@0x406e44a8,
             static darkYellow = @0x406e44b0, static arrowCursor = 
@0x406e2d00,
             static upArrowCursor = @0x406e2d08,
---Type <return> to continue, or q <return> to quit---
             static crossCursor = @0x406e2d10, static waitCursor = 
@0x406e2d18,
             static ibeamCursor = @0x406e2d20,
             static sizeVerCursor = @0x406e2d28,
             static sizeHorCursor = @0x406e2d30,
             static sizeBDiagCursor = @0x406e2d38,
             static sizeFDiagCursor = @0x406e2d40,
             static sizeAllCursor = @0x406e2d48,
             static blankCursor = @0x406e2d50,
             static splitVCursor = @0x406e2d60,
             static splitHCursor = @0x406e2d58,
             static pointingHandCursor = @0x406e2d68,
             static forbiddenCursor = @0x406e2d70,
             static whatsThisCursor = @0x406e2d78}, static metaObj = 
0x82c80c0,
           isSignal = 0, isWidget = 1, pendTimer = 0, blockSig = 0,
           wasDeleted = 0, isTree = 1, objname = 0x0, parentObj = 0x0,
           childObjects = 0x8339c80, connections = 0x833d500,
           senderObjects = 0x83384b0, eventFilters = 0x8324fd0,
           postedEvents = 0x0, d = 0x0,
           _vptr.QObject = 0x8216440 <GuideGrid virtual table>}, 
<QPaintDevice> = {hd = 44040494, rendhd = 44040495, devFlags = 1, 
painters = 1,
           static x_appdisplay = 0x82c9fd0, static x_appscreen = 0,
           static x_appdepth = 24, static x_appcells = 256,
           static x_appcolormap = 32, static x_appdefcolormap = true,
---Type <return> to continue, or q <return> to quit---
           static x_appvisual = 0x82cad18, static x_appdefvisual = true,
           x11Data = 0x0,
           _vptr. = 0x8216400 <GuideGrid::QPaintDevice virtual table>},
         static metaObj = 0x8339e70, winid = 44040494, widget_state = 
12593173,
         widget_flags = 75505681, focus_policy = 0, own_font = 1,
         own_palette = 1, sizehint_forced = 0, is_closing = 0, in_show = 0,
         in_show_maximized = 0, fstrut_dirty = 1, crect = {x1 = 0, y1 = 0,
           x2 = 799, y2 = 599}, bg_col = {static color_init = true,
           static globals_init = true, static colormodel = d32, d = {
             argb = 4282541972, d8 = {argb = 4282541972, pix = 148 '\224',
               invalid = 103 'g', dirty = 66 'B', direct = 0 '\0'}, d32 = {
               argb = 4282541972, pix = 4351892}}}, pal = {data = 
0x8325fe0},
         fnt = {d = 0x833a218}, lay_out = 0x833a058, extra = 0x832b598,
         static mapper = 0x82df9a8}, static metaObj = 0x8339188, rescode 
= 0,
       did_move = 1, has_relpos = 0, did_resize = 1, in_loop = 1,
       d = 0x8326118}, wmult = 1, hmult = 1, screenwidth = 800,
     screenheight = 600}, static metaObj = Internal: global symbol 
`_9GuideGrid.metaObj' found in moc_guidegrid.cpp psymtab but not in symtab.
_9GuideGrid.metaObj may be an inlined function, or may be a template 
function
(if a template, try specifying an instantiation: _9GuideGrid.metaObj<type>).
(gdb)



More information about the mythtv-dev mailing list