Crash with text frame

• Jan 27, 2021 - 13:16
Reported version
S2 - Critical

What to do to replicate the crash:
1. Click the first bar of the last two bars (Voc.)
2. Try to insert to it from the Palettes/Frames&Measures the Text-frame
3. Musescore crashes

Additional info:
- if I add the text-frame to the last bar, the result looks bad
- if I add text-frame to the first horizontal frame of the second system, it hides the automatic system divider
- if I add text-frame to the last horizontal frame strange layout occurs

Why I want to add the text frame:
- because I want to have an second verse lyrics text-box inbetween the systems

Mac latest Os Catalina, MacPro (2013), 128Gb Ram, 8 cores

Attachment Size
Crash_3.6.mscz 20.94 KB


Frequency Many Once

Confirmed, also in 3.5.2 (so no regression) and latest development build. Stack trace:
1 Ms::Slur::layoutSystem slur.cpp 1001 0xa7e600
2 Ms::processLines layout.cpp 3711 0x9dd919
3 Ms::Score::layoutSystemElements layout.cpp 4354 0x9e1b91
4 Ms::Score::collectSystem layout.cpp 4066 0x9df55d
5 Ms::LayoutContext::collectPage layout.cpp 4724 0x9e41ad
6 Ms::LayoutContext::layout layout.cpp 5042 0x9e5e6c
7 Ms::Score::doLayoutRange layout.cpp 5030 0x9e5dca
8 Ms::Score::update cmd.cpp 302 0x5300ee
9 Ms::Score::endCmd cmd.cpp 260 0x52fd8e
10 Ms::Palette::applyPaletteElement palette.cpp 796 0x6bafcb
11 Ms::UserPaletteController::applyPaletteElement paletteworkspace.cpp 579 0x5027c3
12 Ms::AbstractPaletteController::qt_static_metacall moc_paletteworkspace.cpp 286 0x5e95ab
13 Ms::AbstractPaletteController::qt_metacall moc_paletteworkspace.cpp 338 0x5e9798
14 Ms::UserPaletteController::qt_metacall moc_paletteworkspace.cpp 431 0x5e9929
15 QQmlMetaObject::propertyCache(QQmlEnginePrivate *) const 0x66238d6b
16 QV4::QObjectWrapper::virtualResolveLookupGetter(QV4::Object const *, QV4::ExecutionEngine *, QV4::Lookup *) 0x661a5217
17 QV4::QObjectWrapper::virtualResolveLookupGetter(QV4::Object const *, QV4::ExecutionEngine *, QV4::Lookup *) 0x661a694d
18 QV4::QObjectMethod::callInternal(QV4::Value const *, QV4::Value const *, int) const 0x661a755b
19 qt_v4TriggeredBreakpointHook 0x661b748f
20 qt_v4DebuggerHook 0x661ba806

There is a slur at the end of the second measure in the Basso part that appears to go to nowhere. But if you turn off "Hide empty staves within systems", you would be able to see that the slur continues into the third measure. You probably don't want the slur there anyway; you can go ahead and delete it. Once you do, you can insert the text frame before measure 3, and the program will not crash.

The crash is easy to replicate from scratch, even on a score without hidden empty staves. It does not even have anything to do with text frames. It has to do with a slur that spans two systems, but with a horizontal frame alone on a system in between. A system that only consists of a horizontal frame and nothing else would have a null firstMeasure(), which causes a crash when dereferenced here. This can be solved by adding these two lines at the top of processLines():

      if (!system->firstMeasure())