When using cyclic references under guile-2.0 lilypond crashes with
a segmentation fault:
$ LANG=C out/bin/lilypond input/regression/markup-cyclic-reference.ly
GNU LilyPond 2.19.51
Processing `input/regression/markup-cyclic-reference.ly'
Parsing...
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...
Layout output to `/tmp/lilypond-wkUlSF'...
Converting to `markup-cyclic-reference.pdf'...
Deleting `/tmp/lilypond-wkUlSF'...
Segmentation fault
This happens because in Text_interface::interpret_markup the dynamic
extent is not ended properly in the exit path for the case when the
markup depth exceeds the max_depth.
\version "2.19.13"
#(ly:set-option 'warning-as-error #f)
#(ly:expect-warning (ly:translate-cpp-warning-scheme "Markup depth exceeds maximal value of %d; Markup: %s") 1024 'cycle-markup)
-#(ly:expect-warning (ly:translate-cpp-warning-scheme "Markup depth exceeds maximal value of %d; Markup: %s") 1024 'cycleI-markup)
+#(ly:expect-warning (ly:translate-cpp-warning-scheme "Markup depth exceeds maximal value of %d; Markup: %s") 1024 'cycleII-markup)
\header {
texidoc = "Cyclic markup definitions should cause a warning, but
scm_dynwind_unwind_handler (markup_down_depth, 0, SCM_F_WIND_EXPLICITLY);
if (markup_depth > max_depth)
{
+ scm_dynwind_end ();
string name = ly_symbol2string (scm_procedure_name (func));
// TODO: Also print the arguments of the markup!
non_fatal_error (_f ("Markup depth exceeds maximal value of %d; "