Crash on score load - hairpin with no endspanner
MS Nightly 5158978 segfaults trying to load a score it just saved. Score is uploaded at https://drive.google.com/file/d/0B3iW4UPoBO3vN2hraUVmM3pLT0k/ . I have a patch, but someone more knowledgeable than me should probably look and see if it's all OK! PR is at https://github.com/musescore/MuseScore/pull/1046 .
Jarrad
Comments
I think there is more to the story than this. The crash seems to be a result of a hairpin with no end element or tick2, and your code here does allow that to at least load - probably not a bad idea to add this or something like it to protect against this case. But it begs the question, *why* is there a hairpin with no end element or tick2? It appears that hairpin id 255 (found in bar 116 of the Bones and Bari part) in the posted score has no corresponding endspanner. I think even with your fix in place, you'll find hairpins missing in bar 116 both in the score and in the part.
I remember we were having trouble with this a while back, see #23396: Hairpins become corrupt (no end spanner / tick2 == -1), leading to crash and #25481: adding a crescendo corrupts the file. I guess this means there are still cases out there where we can generate hairpins with no endspanner. Still would be be nice to figure out how to reproduce this.
Ok, I am in great admiration if your sleuthing efforts now. :) I can be reasonably sure that those hairpins were all created in the full score, by selecting a passage and pressing <. However, there were some old hairpins in that location that only showed up after I changed font to Bravura. I deleted those. They would have been created in 1.3.
One more thing. Here https://github.com/musescore/MuseScore/blob/master/libmscore/scorefile… we check for tick2 == -1 and we set the tick2 to the end of measure. Apparently the hairpin is not caught here so it's not in the spannermap yet, or the tick2 is set. But then later the tick2 is -1... what a mystery...
Jarrad, since you say the score was originally created in 1.3, do you think it is also possible that you had at some point saved this score with an older development build as well - specfically, one from before the fix for #25481: adding a crescendo corrupts the file?
Since there is no endSpanner tag in the file for this hairpin, I doubt tick2 would ever have been set. I'm betting on "not in the spanner map yet". Like maybe it isn't added until you find the endSpanner? Just guessing.
Re #5:
I don't think so, I played with MS git at the start of the year, decided it wasn't stable enough to do a big project in, so did all composition in MS 1.3. Last week, with composition finished, I imported it into MS git head to take advantage of the better layout and dynamic parts features for publishing. I don't think MS pre mid-July has ever touched this score.
Fixed in de4737d3dc
Automatically closed -- issue fixed for 2 weeks with no activity.