[mythtv-commits] Ticket #12241: Crash while loading a MythUI screen

MythTV noreply at mythtv.org
Sun Aug 10 02:59:39 UTC 2014


#12241: Crash while loading a MythUI screen
-------------------------------------------------+-------------------------
     Reporter:  jyavenard                        |      Owner:  stuartm
         Type:  Bug Report - General             |     Status:  new
     Priority:  blocker                          |  Milestone:  unknown
    Component:  MythTV - User Interface Library  |    Version:  Master Head
     Severity:  medium                           |   Keywords:
Ticket locked:  0                                |
-------------------------------------------------+-------------------------
 Just upgraded today...

 Getting a crash when attempting to load notification-ui.xml:

 {{{
 2014-08-10 12:51:30.218844 I  TV: Entering main playback loop.
 ASSERT failure in QList<T>::operator[]: "index out of range", file
 /Users/jyavenard/Work/mythtv/.osx-packager/build/include/QtCore/qlist.h,
 line 477
 (lldb) bt
 * thread #1: tid = 0x3c6954, 0x00007fff9312e866
 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-
 thread', stop reason = signal SIGABRT
     frame #0: 0x00007fff9312e866 libsystem_kernel.dylib`__pthread_kill +
 10
     frame #1: 0x00007fff94ff235c libsystem_pthread.dylib`pthread_kill + 92
     frame #2: 0x00007fff8c441b1a libsystem_c.dylib`abort + 125
     frame #3: 0x000000010796698a
 libQtCore.4.dylib`qt_message_output(QtMsgType, char const*) + 154
     frame #4: 0x0000000107966c09 libQtCore.4.dylib`qt_message(QtMsgType,
 char const*, __va_list_tag*) + 377
     frame #5: 0x0000000107966561 libQtCore.4.dylib`qFatal(char const*,
 ...) + 145
     frame #6: 0x000000010395f1e0
 libmythui-0.28.0.dylib`QList<int>::operator[](this=0x00000001086bef88,
 i=1) + 96 at qlist.h:477
   * frame #7: 0x000000010395b7e5
 libmythui-0.28.0.dylib`MythUIType::UpdateDependState(this=0x00000001086bef60,
 dependee=0x0000000000000000, isDefault=false) + 389 at mythuitype.cpp:1063
     frame #8: 0x000000010395dce5
 libmythui-0.28.0.dylib`MythUIType::ConnectDependants(this=0x00000001124e70d0,
 recurse=true) + 1813 at mythuitype.cpp:1469
     frame #9: 0x000000010392d278
 libmythui-0.28.0.dylib`XMLParseBase::ParseChildren(filename=0x00007fff5fbfbfa8,
 element=0x00007fff5fbfbd30, parent=0x00000001124e70d0, showWarnings=true)
 + 4184 at xmlparsebase.cpp:409
     frame #10: 0x0000000103935604
 libmythui-0.28.0.dylib`XMLParseBase::doLoad(windowname=0x00007fff5fbfc278,
 parent=0x00000001124e70d0, filename=0x00007fff5fbfbfa8, onlywindows=true,
 showWarnings=true) + 4772 at xmlparsebase.cpp:764
     frame #11: 0x0000000103933d81
 libmythui-0.28.0.dylib`XMLParseBase::LoadWindowFromXML(xmlfile=0x00007fff5fbfc268,
 windowname=0x00007fff5fbfc278, parent=0x00000001124e70d0) + 961 at
 xmlparsebase.cpp:686
     frame #12: 0x0000000103a23d77
 libmythui-0.28.0.dylib`MythNotificationScreen::Create(this=0x00000001124e70d0)
 + 407 at mythnotificationcenter.cpp:418
     frame #13: 0x0000000102638c4a
 libmythtv-0.28.0.dylib`OSD::DrawDirect(this=0x00000001184777e0,
 painter=0x00000001124c4a20, size=QSize at 0x00007fff5fbfc560,
 repaint=true) + 1146 at osd.cpp:675
     frame #14: 0x00000001026d40ba
 libmythtv-0.28.0.dylib`VideoOutputOpenGL::PrepareFrame(this=0x0000000109184200,
 buffer=0x0000000109926c58, t=kScan_Ignore, osd=0x00000001184777e0) + 3818
 at videoout_opengl.cpp:636
     frame #15: 0x000000010256bdc3
 libmythtv-0.28.0.dylib`MythPlayer::DisplayPauseFrame(this=0x000000010c941600)
 + 387 at mythplayer.cpp:2177
     frame #16: 0x000000010256e104
 libmythtv-0.28.0.dylib`MythPlayer::VideoLoop(this=0x000000010c941600) + 84
 at mythplayer.cpp:2506
     frame #17: 0x00000001024a3183
 libmythtv-0.28.0.dylib`TV::PlaybackLoop(this=0x000000010988a600) + 339 at
 tv_play.cpp:1440
     frame #18: 0x00000001024a0b02
 libmythtv-0.28.0.dylib`TV::StartTV(tvrec=0x0000000000000000, flags=0,
 selection=0x00007fff5fbfcfa8) + 4834 at tv_play.cpp:409
     frame #19: 0x000000010001b0db mythfrontend`startTVNormal() + 75 at
 main.cpp:601
     frame #20: 0x0000000100018ee2
 mythfrontend`TVMenuCallback(data=0x000000010b74ee50,
 selection=0x0000000108680f00) + 450 at main.cpp:821
     frame #21: 0x00000001039a1bbb
 libmythui-0.28.0.dylib`MythThemedMenu::handleAction(this=0x0000000108680ce0,
 action=0x000000010b77a4f8, password=0x00007fff5fbfda38) + 3931 at
 myththemedmenu.cpp:859
     frame #22: 0x00000001039a3777
 libmythui-0.28.0.dylib`MythThemedMenu::buttonAction(this=0x0000000108680ce0,
 item=0x00000001184de810, skipPass=false) + 343 at myththemedmenu.cpp:718
     frame #23: 0x0000000103a6eb01
 libmythui-0.28.0.dylib`MythThemedMenu::qt_static_metacall(_o=0x0000000108680ce0,
 _c=InvokeMetaMethod, _id=2, _a=0x00007fff5fbfdbf0) + 257 at
 moc_myththemedmenu.cpp:54
     frame #24: 0x0000000107a8115e
 libQtCore.4.dylib`QMetaObject::activate(QObject*, QMetaObject const*, int,
 void**) + 2030
     frame #25: 0x0000000103a715ed
 libmythui-0.28.0.dylib`MythUIButtonList::itemClicked(this=0x000000010850b8a0,
 _t1=0x00000001184de810) + 77 at moc_mythuibuttonlist.cpp:122
     frame #26: 0x00000001039cf45b
 libmythui-0.28.0.dylib`MythUIButtonList::keyPressEvent(this=0x000000010850b8a0,
 e=0x00007fff5fbfe670) + 3723 at mythuibuttonlist.cpp:2479
     frame #27: 0x00000001039a0323
 libmythui-0.28.0.dylib`MythThemedMenu::keyPressEvent(this=0x0000000108680ce0,
 event=0x00007fff5fbfe670) + 115 at myththemedmenu.cpp:209
     frame #28: 0x00000001038fe48d
 libmythui-0.28.0.dylib`MythMainWindow::eventFilter(this=0x000000010b3341f0,
 (null)=0x000000010b3341f0, e=0x00007fff5fbfe670) + 637 at
 mythmainwindow.cpp:2106
     frame #29: 0x0000000107a69ee9
 libQtCore.4.dylib`QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*,
 QEvent*) + 105
     frame #30: 0x0000000106c8e313
 libQtGui.4.dylib`QApplicationPrivate::notify_helper(QObject*, QEvent*) +
 243
     frame #31: 0x0000000106c8fb08
 libQtGui.4.dylib`QApplication::notify(QObject*, QEvent*) + 1464
     frame #32: 0x0000000107a69c33
 libQtCore.4.dylib`QCoreApplication::notifyInternal(QObject*, QEvent*) + 99
     frame #33: 0x0000000106c91cdf
 libQtGui.4.dylib`qt_sendSpontaneousEvent(QObject*, QEvent*) + 47
     frame #34: 0x0000000106cfef9e
 libQtGui.4.dylib`QKeyMapper::sendKeyEvent(QWidget*, bool, QEvent::Type,
 int, QFlags<Qt::KeyboardModifier>, QString const&, bool, int, unsigned
 int, unsigned int, unsigned int, bool*) + 414
     frame #35: 0x0000000106cfea1b
 libQtGui.4.dylib`QKeyMapperPrivate::translateKeyEvent(QWidget*,
 OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*, bool) + 1227
     frame #36: 0x0000000106c4273e
 libQtGui.4.dylib`qt_dispatchKeyEvent(void*, QWidget*) + 302
     frame #37: 0x0000000106c38009 libQtGui.4.dylib`-[QCocoaView keyDown:]
 + 265
     frame #38: 0x00007fff8ed0456b AppKit`-[NSWindow sendEvent:] + 1843
     frame #39: 0x0000000106c3b0e2 libQtGui.4.dylib`-[QCocoaWindow
 sendEvent:] + 114
     frame #40: 0x00007fff8eca5b32 AppKit`-[NSApplication sendEvent:] +
 3395
     frame #41: 0x0000000106c3fe32 libQtGui.4.dylib`-[QNSApplication
 sendEvent:] + 82
     frame #42: 0x00007fff8eaf59f9 AppKit`-[NSApplication run] + 646
     frame #43: 0x0000000106c48972
 libQtGui.4.dylib`QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
 + 994
     frame #44: 0x0000000107a671c7
 libQtCore.4.dylib`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
 + 487
     frame #45: 0x0000000107a6a15e
 libQtCore.4.dylib`QCoreApplication::exec() + 206
     frame #46: 0x0000000100011da7 mythfrontend`main(argc=5,
 argv=0x00007fff5fbffa20) + 17431 at main.cpp:1931
 }}}

 Crash occurs due to an out of bound access in a QList:
 void MythUIType::UpdateDependState(MythUIType *dependee, bool isDefault)

 This line:
         if (m_dependOperator[i-1] == 1)


 i = 2, size of m_dependOperator is 1, so attempting to access
 m_dependOperator[1] will cause a crash (in Qt debug version)

--
Ticket URL: <https://code.mythtv.org/trac/ticket/12241>
MythTV <http://www.mythtv.org>
MythTV Media Center


More information about the mythtv-commits mailing list