https://codereview.appspot.com/576090043
This used to work as recently as 2.20.0, and it no longer does:
\version 2.21.1 \layout { \context { \type Engraver_group \name GlobalRests %\consists Staff_symbol_engraver %\omit StaffSymbol \consists Multi_measure_rest_engraver } \context { \Score \accepts GlobalRests } } \score { \new GlobalRests { R1 } }
Uncommenting the Staff_symbol_engraver prevents the segfault from happening.
Here’s what gdb has to say:
Program received signal SIGSEGV, Segmentation fault. Grob::internal_get_property (this=this@entry=0x0, sym=0x7fffe98e1ea0) at grob-property.cc:162 162 SCM val = get_property_data (this, sym);
Reported by Trevor B: https://lists.gnu.org/archive/html/lilypond-user/2020-05/msg00077.html
gdb would likely have a lot more to say if you told it
bt
in order to get a backtrace. This only tells us that a property access on a non-existent grob goes wrong, but not where that property is getting accessed and, likely, what the property is.
Duh.
IIUC, the Multi_measure_rest_engraver now relies on line-positions to place the grob, hence the crash?
That sounds like a sensible guess given the backtrace. It would appear that line-positions on a non-existent StaffSymbol is a bad idea...
Fix #5964: MM Rests shouldn’t segfault when there’s no StaffSymbol.
https://codereview.appspot.com/576090043
Use `oneline’ when there’s either no staff OR a one-line staff
https://codereview.appspot.com/576090043
Passes make, make check and a full make doc.
Reg test diff attached
Patch on countdown for May 11th - although there are what look like relatively simple comments on Rietveld that need addressing
[proposal] Make Staff_symbol::line_count public and use it when <line_positions>’s not needed</line_positions>
https://codereview.appspot.com/576090043
Passes make, make check and a full make doc.
Reg test diff attached