Opened 10 years ago

Closed 5 years ago

#12241 closed Bug Report - General (Fixed)

Crash while loading a MythUI screen

Reported by: JYA Owned by: stuartm
Priority: blocker Milestone: 0.28
Component: MythTV - User Interface Library Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

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)

Attachments (1)

notification-ui.xml (10.2 KB) - added by JYA 10 years ago.
Screen causing the crash

Download all attachments as: .zip

Change History (2)

Changed 10 years ago by JYA

Attachment: notification-ui.xml added

Screen causing the crash

comment:1 Changed 5 years ago by Stuart Auchterlonie

Milestone: unknown0.28
Resolution: Fixed
Status: newclosed

This appears to have been fixed in the following commit

https://github.com/MythTV/mythtv/commit/6444db38eb83784c943894ab9c7d4a200d89e50c

Note: See TracTickets for help on using tickets.