Crash by entering a time signature with a last filled measure under a different time signature

• Jan 6, 2017 - 22:05
Reported version
3.0
Type
Graphical (UI)
Severity
S2 - Critical
Status
closed
Project

In the attached score, when I attempt entering a time signature change with drag&drop or double click from the pallette in any of the leading empty bars, the application crashes in case the new bar value is shorter than current. So, it is possible to enter a 6/4 time signature, but not 3/4 or 3/8

backtrace:
#0 0x00007fffedb0404f in raise () at /usr/lib/libc.so.6
#1 0x00007fffedb0547a in abort () at /usr/lib/libc.so.6
#2 0x00007fffee4a14f1 in () at /usr/lib/libQt5Core.so.5
#3 0x0000000000ddb9e2 in ()
#4 0x0000000000ddca28 in Ms::TrackList::write(Ms::Score*, int) const ()
#5 0x0000000000ddd4b6 in Ms::ScoreRange::write(Ms::Score*, int) const ()
#6 0x0000000000c5c90a in Ms::Score::rewriteMeasures(Ms::Measure*, Ms::Measure*, Ms::Fraction const&, int) ()
#7 0x0000000000c5cba6 in Ms::Score::rewriteMeasures(Ms::Measure*, Ms::Fraction const&, int) ()
#8 0x0000000000c5d6da in Ms::Score::cmdAddTimeSig(Ms::Measure*, int, Ms::TimeSig*, bool) ()
#9 0x0000000000cc9a2a in Ms::Measure::drop(Ms::DropData const&) ()
#10 0x00000000009f8ea3 in Ms::ScoreView::dropEvent(QDropEvent*) ()
#11 0x00007ffff52429b8 in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#12 0x00007ffff51fb35c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#13 0x00007ffff52033ee in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#14 0x00007fffee6958e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#15 0x00007ffff525ee1a in () at /usr/lib/libQt5Widgets.so.5
#16 0x00007ffff525faab in () at /usr/lib/libQt5Widgets.so.5
#17 0x00007ffff51fb35c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#18 0x00007ffff5202ad1 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#19 0x00007fffee6958e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#20 0x00007fffef53bb88 in QGuiApplicationPrivate::processDrop(QWindow*, QMimeData const*, QPoint const&, QFlags) ()
at /usr/lib/libQt5Gui.so.5
#21 0x00007fffef51a3ef in QWindowSystemInterface::handleDrop(QWindow*, QMimeData const*, QPoint const&, QFlags) ()
at /usr/lib/libQt5Gui.so.5
#22 0x00007fffd8a66e56 in () at /usr/lib/libQt5XcbQpa.so.5
#23 0x00007fffd8a69525 in () at /usr/lib/libQt5XcbQpa.so.5
#24 0x00007fffef52e90a in QBasicDrag::eventFilter(QObject*, QEvent*) () at /usr/lib/libQt5Gui.so.5
#25 0x00007fffee695516 in QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#26 0x00007ffff51fb398 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#27 0x00007ffff5202ad1 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#28 0x00007fffee6958e0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#29 0x00007fffef53a663 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/libQt5Gui.so.5
#30 0x00007fffef53c1e5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) ()
at /usr/lib/libQt5Gui.so.5
#31 0x00007fffef51a15b in QWindowSystemInterface::sendWindowSystemEvents(QFlags) () at /usr/lib/libQt5Gui.so.5
#32 0x00007fffd8a8fdc0 in () at /usr/lib/libQt5XcbQpa.so.5
#33 0x00007fffeba03587 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#34 0x00007fffeba037f0 in () at /usr/lib/libglib-2.0.so.0
#35 0x00007fffeba0389c in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#36 0x00007fffee6ea2bf in QEventDispatcherGlib::processEvents(QFlags) () at /usr/lib/libQt5Core.so.5
#37 0x00007fffee693d3a in QEventLoop::exec(QFlags) () at /usr/lib/libQt5Core.so.5
#38 0x00007fffef52ed52 in QBasicDrag::drag(QDrag*) () at /usr/lib/libQt5Gui.so.5
#39 0x00007fffef54b0c1 in QDragManager::drag(QDrag*) () at /usr/lib/libQt5Gui.so.5
#40 0x00007fffef5499f7 in QDrag::exec(QFlags, Qt::DropAction) () at /usr/lib/libQt5Gui.so.5
#41 0x000000000084abad in Ms::Palette::mouseMoveEvent(QMouseEvent*) ()
#42 0x00007ffff52429b8 in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#43 0x00000000008442ef in Ms::Palette::event(QEvent*) ()
#44 0x00007ffff51fb35c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5

Attachment Size
time_signature.mscz 14.53 KB

Comments

Title crash when entering time signature change Crash when entering time signature change in this file on undo

The crash no longer appears by adding eg a 3/4 time signature (or 2/4) since d9ff5a2.
But now in this file, with the currents 3.0 dev., crash always by adding time sig (no matter the which one) -> undo

Title Crash when entering time signature change in this file on undo Crash by entering a time signature with a last filled measure under a different time signature

GIT commit: 051fa74 / Windows10
Steps to reproduce from scratch:

1) Create new score for flute (6 measures)
2) Add a 3/4 time signature last measure and fill it with notes (ie its complete duration)

3) Drag and drop (or double-click) a 2/4 time signature in measure 3

Result: crash

  • There is different scenarios depending which is the added time signature and the location: eg no crash with 3/8 added in measure 2, but crash in measure 3.

  • In any cases, the issue disappears by cutting the last quarter note (so, to get a last rest), or by appending a measure

  • Ditto in the original file (first message), ie: time_signature.mscz
    . crash by adding eg a 3/4 time signature in measure 3
    . no crash with the same step but after cutting the last A, last measure of second staff (oboe)

Attachment Size
Flute.mscz 2.66 KB
time_signature.mscz 14.32 KB