Crash when saving after deleting a staff from grand staff in score with parts
ac4819da45 and MuseScore 2.0.2
May be related to #91271: Crash on save after creating new part from score with connecting barlines with parts selected in bottom-to-top order
- Create a score from the SATB + Piano template
- Create all parts
- Press i and delete the bass clef staff from piano
- Press OK
- Save the file
--> Crash on a qFatal...
#5 0x0000000100bb90ac in Ms::Staff::write(Ms::Xml&) const at /Users/lasconic/MuseScore/libmscore/staff.cpp:505
#6 0x0000000100afc144 in Ms::Part::write(Ms::Xml&) const at /Users/lasconic/MuseScore/libmscore/part.cpp:110
#7 0x0000000100b76258 in Ms::Score::write(Ms::Xml&, bool) at /Users/lasconic/MuseScore/libmscore/scorefile.cpp:214
#8 0x0000000100b765fc in Ms::Score::write(Ms::Xml&, bool) at /Users/lasconic/MuseScore/libmscore/scorefile.cpp:235
#9 0x0000000100b78516 in Ms::Score::saveFile(QIODevice*, bool, bool) at /Users/lasconic/MuseScore/libmscore/scorefile.cpp:679
Comments
Workaroud: delete the parts before removing the bass clef staff...
I think this is a known problem, a duplicate, reported in various ways: eg: #63226: Crash on autosave after deleting staff from instrument in score with linked parts, or: #70226: Entering an articulation/ornament after the deletion of a linked staff in a file with part causes crash and others related.
Indeed, the main point for receive a crash is:
- after generating parts, remove a staff of an instrument containing two staves (piano, harp) or three staves (organ, harpsichord etc: in this case, you have to delete the last two staves to receive the crash)
- or, after generating parts, remove a linked staff.
And indeed, the workaround is to either not create the parts before deleting these staves, or either remove the parts (and recreate them after) before the removal of the staff.
Other examples with minimum scores:
Piano: Piano Template.mscz
Harp: Harp score.mscz
Organ: Organ score.mscz
Template Guitar + Tab: Guitar + Tablature template.mscz
1) Load these files above
2) Generate parts
3) Delete the second staff (the last two for organ)
4) Save
Result: crash
For guitar + Tab, the crash occurs one step after [ 4) Save 5) Enter a note] -> crash
Unless I'm very much mistaken, this appears to be an exact duplicate of #63226: Crash on autosave after deleting staff from instrument in score with linked parts.
Since this is undeniably the better bug report, let's say that the other is the duplicate. ;-)
See the analysis of what is probably happening (for #63226: Crash on autosave after deleting staff from instrument in score with linked parts) here:
https://musescore.org/en/node/63226#comment-317216
Fixed in branch master, commit f97384a8c9
fix #94711: Crash when saving after deleting a staff from grand staff in score with parts
Fixed in branch 2.0.3, commit e98634904c
fix #94711: Crash when saving after deleting a staff from grand staff in score with parts
Thanks ABL for the analysis
If I understood correctly, this commit fixes the cases of staves removal for instruments with two or three staves (piano, organ etc.)
But not issues related to the deletion of a linked staff - after generating parts always :(
1) Guitar + Tablature template (or violin + linked violin etc.)
2) Generate parts
3) Delete Tab staff (second staff)
4) Enter a note (no necessary to save before, as described above in comment #2, my oblivion / error)
Result: crash
Edit: Of course, a linked staff is of a different nature (well, I guess!), but I thought that the creation of the parts before the deletion of a staff was the central point of these issues. Apparently not, or not only :(
As far as I know, there are two basic causes of crashes that relate to adding or removing staves in the presence of linked parts. One of these has to do with management of barlines and making sure they span the proper number of staves. I think this is what was fixed here. The other problem is more basic: when we remove a linked staff, each of the elements on the remaining staff still thinks it is linked to the corresponding element on the now-deleted staff. Which is basically just a crash waiting to happen. I think we probably have at least half a dozen issues reported that are just specific ways to get MuseScore to crash once it reaches that state with all these links to elements on deleted staves.
@cadiz1 Is your bug already filed?
It's a known problem, related to these issues, eg: #70226: Entering an articulation/ornament after the deletion of a linked staff in a file with part causes crash and #70146: Explosive accents on Guitar part with linked tab staff
But described with a so minimum and "simple" way, except mistake, I do not think so.
So it is perhaps useful to report it.
I do it.
Automatically closed -- issue fixed for 2 weeks with no activity.