Hendrik Fuß wrote on 2019/02/07 18:30:
Hi,

attached is a minimal example that causes a crash in lilypond 2.19.82.

Output:

GNU LilyPond 2.19.82
»assertion_test.ly« wird verarbeitet
Analysieren...
Interpretation der Musik...
Vorverarbeitung der grafischen 
Elemente.../home/gub/NewGub/gub/target/darwin-x86/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.20/flower/include/interval.hh:227:
 failed assertion `!is_empty ()'
Abort trap: 6

Hope this is helpful.


Well, I see the same crash on Fedora 29 x86_64, using lilypond 2.19.82.
gdb log attached, with full debugging symbols.

Regards,
Mamoru

スクリプト開始 2019-02-08 23:56:01+09:00
$ gdb --args lilypond ./assertion_test.ly 
GNU gdb (GDB) Fedora 8.2-6.fc29
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from lilypond...Reading symbols from 
/usr/lib/debug/usr/bin/lilypond-2.19.82-3.100.ozero.fc29.x86_64.debug...done.
done.
(gdb) break stem-tremolo.cc:175
Breakpoint 1 at 0x333681: file stem-tremolo.cc, line 175.
(gdb) r
Starting program: /usr/bin/lilypond ./assertion_test.ly
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
GNU LilyPond 2.19.82
warning: Loadable section ".note.gnu.property" outside of ELF segments
`./assertion_test.ly' を処理しています
構文解析中...
楽曲を解釈中...
グラフィカルオブジェクトの前処理中...
Breakpoint 1, Stem_tremolo::pure_height (smob=<optimized out>) at 
stem-tremolo.cc:175
175       Interval ph = stem->pure_y_extent (stem, 0, INT_MAX);
Missing separate debuginfos, use: dnf debuginfo-install 
bzip2-libs-1.0.6-28.fc29.x86_64 expat-2.2.6-1.fc29.x86_64 
freetype-2.9.1-6.fc29.x86_64 fribidi-1.0.5-1.fc29.x86_64 
gmp-6.1.2-8.fc29.x86_64 graphite2-1.3.10-6.fc29.x86_64 
harfbuzz-1.8.7-1.fc29.x86_64 libdatrie-0.2.9-8.fc29.x86_64 
libgcc-8.2.1-6.fc29.x86_64 libpng-1.6.34-6.fc29.x86_64 
libstdc++-8.2.1-6.fc29.x86_64 libthai-0.1.28-1.fc29.x86_64 
libtool-ltdl-2.4.6-27.fc29.x86_64 libuuid-2.32.1-1.fc29.x86_64 
libxcrypt-4.4.3-2.fc29.x86_64 pango-1.42.4-2.fc29.x86_64 
pcre-8.42-6.fc29.x86_64 zlib-1.2.11-14.fc29.x86_64
(gdb) bt
#0  0x0000555555887681 in Stem_tremolo::pure_height(scm_unused_struct*, 
scm_unused_struct*, scm_unused_struct*) (smob=<optimized out>) at 
stem-tremolo.cc:175
#1  0x00007ffff7ecfeba in scm_dapply (proc=0x7fffea29a2c0, arg1=0x7fffe6eed4f0, 
args=0x7fffe6cd77e0) at eval.c:4927
#2  0x0000555555643628 in Grob::pure_y_extent(Grob*, int, int) 
(this=this@entry=0x555555e4ba80, refp=refp@entry=0x555555e4ba80, 
start=start@entry=0, end=end@entry=8)
    at grob.cc:498
#3  0x0000555555664dff in Item::pure_y_extent(Grob*, int, int) (end=8, start=0, 
g=0x555555e4b0b0, this=0x555555e4ba80) at item.cc:235
#4  0x0000555555664dff in Item::pure_y_extent(Grob*, int, int) 
(this=0x555555e4ba80, g=0x555555e4b0b0, start=0, end=8) at item.cc:227
#5  0x0000555555898ab4 in 
Axis_group_interface::adjacent_pure_heights(scm_unused_struct*) 
(smob=<optimized out>) at axis-group-interface.cc:287
#6  0x00007ffff7ecfc92 in scm_dapply (proc=0x7fffea2a1eb0, arg1=0x7fffe6eee120, 
args=0x404) at eval.c:4895
#7  0x00005555557d000f in Grob::try_callback_on_alist(scm_unused_struct**, 
scm_unused_struct*, scm_unused_struct*)
    (this=0x555555e4b0b0, alist=0x555555e4b110, sym=0x7fffe86f5180, 
proc=0x7fffea2a1eb0) at ./include/smobs.hh:309
#8  0x00005555558968e7 in Axis_group_interface::part_of_line_pure_height(Grob*, 
bool, int, int)
    (me=me@entry=0x555555e4b0b0, begin=begin@entry=true, start=start@entry=0, 
end=end@entry=1) at axis-group-interface.cc:162
#9  0x0000555555896aeb in 
Axis_group_interface::begin_of_line_pure_height(Grob*, int) 
(me=me@entry=0x555555e4b0b0, start=start@entry=0) at axis-group-interface.cc:186
#10 0x0000555555896b59 in Axis_group_interface::sum_partial_pure_heights(Grob*, 
int, int) (me=me@entry=0x555555e4b0b0, start=start@entry=0, 
end=end@entry=2147483647)
    at axis-group-interface.cc:143
#11 0x0000555555896c12 in Axis_group_interface::relative_pure_height(Grob*, 
int, int) (me=me@entry=0x555555e4b0b0, start=start@entry=0, 
end=end@entry=2147483647)
    at axis-group-interface.cc:334
#12 0x0000555555897560 in Axis_group_interface::pure_group_height(Grob*, int, 
int) (me=0x555555e4b0b0, start=0, end=2147483647) at axis-group-interface.cc:592
#13 0x00005555555f088d in 
Hara_kiri_group_spanner::pure_height(scm_unused_struct*, scm_unused_struct*, 
scm_unused_struct*)
    (smob=<optimized out>, start_scm=<optimized out>, end_scm=<optimized out>) 
at hara-kiri-group-spanner.cc:58
#14 0x00007ffff7ecfeba in scm_dapply (proc=0x7fffea22ee10, arg1=0x7fffe6eee120, 
args=0x7fffe6cee4f0) at eval.c:4927
#15 0x0000555555643628 in Grob::pure_y_extent(Grob*, int, int) 
(this=0x555555e4b0b0, refp=0x555555e4b0b0, start=0, end=2147483647) at 
grob.cc:498
#16 0x000055555587a61d in get_skylines (end=2147483647, start=0, pure=true, 
other_common=0x555555e4bc90, a=Y_AXIS, g=0x555555e4b0b0) at 
align-interface.cc:96
#17 0x000055555587a61d in 
Align_interface::internal_get_minimum_translations(Grob*, std::vector<Grob*, 
std::allocator<Grob*> > const&, Axis, bool, bool, int, int)
    (me=0x555555e4b550, elems=..., a=Y_AXIS, include_fixed_spacing=true, 
pure=true, start=0, end=2147483647) at align-interface.cc:212
#18 0x000055555587b271 in Align_interface::get_pure_minimum_translations(Grob*, 
std::vector<Grob*, std::allocator<Grob*> > const&, Axis, int, int)
    (me=me@entry=0x555555e4b550, all_grobs=std::vector of length 1, capacity 1 
= {...}, a=a@entry=Y_AXIS, start=start@entry=0, end=end@entry=2147483647)
    at align-interface.cc:146
#19 0x000055555587b302 in Align_interface::get_pure_child_y_translation(Grob*, 
Grob*, int, int)
    (me=me@entry=0x555555e4b550, ch=ch@entry=0x555555e4b0b0, 
start=start@entry=0, end=end@entry=2147483647) at align-interface.cc:320
#20 0x0000555555643541 in Grob::pure_relative_y_coordinate(Grob const*, int, 
int) (this=0x555555e4b0b0, refp=0x555555e396e0, start=0, end=2147483647) at 
grob.cc:392
#21 0x0000555555643382 in Grob::pure_relative_y_coordinate(Grob const*, int, 
int)
    (this=this@entry=0x555555e4abc0, refp=refp@entry=0x555555e396e0, 
start=start@entry=0, end=end@entry=2147483647) at grob.cc:394
#22 0x0000555555664e32 in Item::pure_y_extent(Grob*, int, int) (end=2147483647, 
start=0, g=0x555555e396e0, this=0x555555e4abc0) at item.cc:243
#23 0x0000555555664e32 in Item::pure_y_extent(Grob*, int, int) 
(this=0x555555e4abc0, g=0x555555e396e0, start=0, end=2147483647) at item.cc:227
#24 0x000055555588e098 in Separation_item::boxes(Grob*, Grob*) (me=<optimized 
out>, left=0x0) at separation-item.cc:160
#25 0x000055555588e7aa in Separation_item::calc_skylines(scm_unused_struct*) 
(smob=<optimized out>) at separation-item.cc:91
#26 0x00007ffff7ecfc92 in scm_dapply (proc=0x7fffea29fb20, arg1=0x7fffe6efb500, 
args=0x404) at eval.c:4895
#27 0x00005555557d000f in Grob::try_callback_on_alist(scm_unused_struct**, 
scm_unused_struct*, scm_unused_struct*)
    (this=0x555555e4bc90, alist=0x555555e4bcf0, sym=0x7fffe86f5780, 
proc=0x7fffea29fb20) at ./include/smobs.hh:309
#28 0x00005555556b26d0 in Paper_column::minimum_distance(Grob*, Grob*) 
(left=0x555555e4bc90, right=0x555555e45610) at paper-column.cc:172
#29 0x00005555557ce404 in Staff_spacing::get_spacing(Grob*, Grob*, double)
    (me=me@entry=0x555555e66ac0, right_col=right_col@entry=0x555555e45610, 
situational_space=situational_space@entry=0) at staff-spacing.cc:198
#30 0x00005555558398c0 in Spacing_spanner::breakable_column_spacing(Grob*, 
Item*, Item*, Spacing_options const*)
--Type <RET> for more, q to quit, c to continue without paging--n
    (me=0x555555e4b490, l=0x555555e4bc90, r=0x555555e45610, 
options=0x7fffffffa4a0) at spacing-spanner.cc:501
#31 0x0000555555839d4f in Spacing_spanner::generate_pair_spacing(Grob*, 
Paper_column*, Paper_column*, Paper_column*, Spacing_options const*)
    (me=0x555555e4b490, left_col=0x555555e4bc90, right_col=0x555555e45610, 
after_right_col=<optimized out>, options=0x7fffffffa4a0) at 
spacing-spanner.cc:210
#32 0x0000555555839ef0 in Spacing_spanner::generate_springs(Grob*, 
std::vector<Grob*, std::allocator<Grob*> > const&, Spacing_options const*)
    (me=0x555555e4b490, cols=std::vector of length 6, capacity 6 = {...}, 
options=0x7fffffffa4a0) at spacing-spanner.cc:300
#33 0x000055555583a6d9 in Spacing_spanner::set_springs(scm_unused_struct*) 
(smob=<optimized out>) at spacing-spanner.cc:73
#34 0x00007ffff7ecfc92 in scm_dapply (proc=0x7fffea251b40, arg1=0x7fffe6eede70, 
args=0x404) at eval.c:4895
#35 0x00005555557d000f in Grob::try_callback_on_alist(scm_unused_struct**, 
scm_unused_struct*, scm_unused_struct*)
    (this=0x555555e4b490, alist=0x555555e4b4f0, sym=0x7fffe9975b00, 
proc=0x7fffea251b40) at ./include/smobs.hh:309
#36 0x000055555560ee2c in System::pre_processing() () at system.cc:527
#37 0x000055555587c166 in Paper_score::process() (this=0x555555c91680) at 
paper-score.cc:134
#38 0x000055555582eab1 in ly_format_output(scm_unused_struct*) 
(context=context@entry=0x7fffe6f55e30) at global-context-scheme.cc:45
#39 0x000055555578968c in Score::book_rendering(Output_def*, Output_def*)
    (this=this@entry=0x555555e1d350, layoutbook=0x555555c9dbc0, 
default_def=default_def@entry=0x555555de0c30) at score.cc:144
#40 0x00005555556e3ac8 in Book::process_score(scm_unused_struct*, Paper_book*, 
Output_def*)
    (this=this@entry=0x555555e1c760, s=s@entry=0x7fffe6f8caa0, 
output_paper_book=output_paper_book@entry=0x555555c9dd90, 
layout=layout@entry=0x555555de0c30)
    at book.cc:224
#41 0x00005555556e3d89 in Book::process(Output_def*, Output_def*, Paper_book*)
    (this=0x555555e1c760, default_paper=<optimized out>, 
default_layout=0x555555de0c30, parent_part=0x0) at book.cc:302
#42 0x00005555557c3a98 in ly_book_process(scm_unused_struct*, 
scm_unused_struct*, scm_unused_struct*, scm_unused_struct*)
    (book_smob=<optimized out>, default_paper=0x7fffe71a1800, 
default_layout=0x7fffe7327520, output=0x7fffe96049a0) at ./include/smobs.hh:179
#43 0x00007ffff7ecfe3f in scm_dapply (proc=0x7fffe99af4f0, arg1=0x7fffea3940f0, 
args=0x7fffe6fcde80, args@entry=0x404) at eval.c:4930
#44 0x00007ffff7ed207d in deval (x=<optimized out>, env=<optimized out>) at 
eval.c:4378
#45 0x00007ffff7eda736 in scm_c_with_fluid
    (fluid=0x7fffe996fd80, value=value@entry=0x7fffe6fd0890, 
cproc=cproc@entry=0x555555691120 <catch_protected_eval_body(void*)>, 
cdata=cdata@entry=0x7fffffffab60)
    at fluids.c:463
#46 0x00005555556912a7 in ly_eval_scm(scm_unused_struct*, Input, bool, 
Lily_parser*)
    (form=form@entry=0x7fffe6fd1450, i=..., safe=safe@entry=false, 
parser=parser@entry=0x555555c4a1e0) at ./include/lily-modules.hh:65
#47 0x00005555558c6f03 in Lily_lexer::eval_scm(scm_unused_struct*, Input, char)
    (this=this@entry=0x555555a70640, 
readerdata=readerdata@entry=0x7fffe6fd1450, hi=..., 
extra_token=extra_token@entry=35 '#') at lexer.ll:1111
#48 0x00005555558d4e93 in Lily_lexer::eval_scm_token(scm_unused_struct*, Input) 
(w=..., sval=0x7fffe6fd1450, this=0x555555a70640) at ./include/lily-lexer.hh:63
#49 0x00005555558d4e93 in yyparse(Lily_parser*, scm_unused_struct**) 
(parser=<optimized out>, retval=0x7fffffffca10) at parser.yy:450
#50 0x00005555558de1a8 in Lily_parser::do_yyparse_trampoline(void*) 
(parser=parser@entry=0x555555c4a1e0) at parser.yy:4209
#51 0x00007ffff7eda736 in scm_c_with_fluid
    (fluid=0x7fffe996fe00, value=0x7fffe7f052c0, 
cproc=cproc@entry=0x5555558de180 <Lily_parser::do_yyparse_trampoline(void*)>, 
cdata=cdata@entry=0x555555c4a1e0)
    at fluids.c:463
#52 0x00005555558ccac5 in Lily_parser::do_yyparse() 
(this=this@entry=0x555555c4a1e0) at ./include/lily-modules.hh:65
#53 0x0000555555891e38 in 
Lily_parser::parse_file(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const&)
    (this=this@entry=0x555555c4a1e0, init="init.ly", 
name="./assertion_test.ly", out_name="assertion_test") at lily-parser.cc:123
#54 0x00005555557afb7b in ly_parse_file(scm_unused_struct*) (name=<optimized 
out>) at lily-parser-scheme.cc:121
#55 0x00007ffff7ed2db6 in deval (x=<optimized out>, x@entry=0x7fffe80d5380, 
env=<optimized out>, env@entry=0x7fffe7f05350) at eval.c:4232
#56 0x00007ffff7ed0473 in scm_dapply (proc=0x7fffe7f05460, arg1=<optimized 
out>, args=0x7fffe7f05350) at ../libguile/inline.h:305
#57 0x00007ffff7f2a9fb in scm_c_catch
--Type <RET> for more, q to quit, c to continue without paging--
    (tag=<optimized out>, body=body@entry=0x7ffff7f2a400 <scm_body_thunk>, 
body_data=body_data@entry=0x7fffffffd220, handler=0x7ffff7f2a410 
<scm_handle_by_proc>, handler_data=handler_data@entry=0x7fffffffd218, 
pre_unwind_handler=0x0, pre_unwind_handler_data=0x7fffffffd210) at throw.c:203
#58 0x00007ffff7f2ac21 in scm_catch_with_pre_unwind_handler (key=<optimized 
out>, thunk=<optimized out>, handler=<optimized out>, 
pre_unwind_handler=<optimized out>)
    at throw.c:587
#59 0x00007ffff7ecfe3f in scm_dapply (proc=0x7fffe99af4f0, arg1=0x7fffea3a2940, 
args=0x7fffe7f053a0, args@entry=0x404) at eval.c:4930
#60 0x00007ffff7ed207d in deval (x=<optimized out>, env=<optimized out>, 
env@entry=0x7fffe7f05600) at eval.c:4378
#61 0x00007ffff7ed3154 in deval (x=0x7fffe80d8be0, x@entry=0x7fffe80d9230, 
env=0x7fffe7f05600, env@entry=0x7fffe7f11160) at ../libguile/inline.h:305
#62 0x00007ffff7ed0473 in scm_dapply (proc=0x7fffe7f11c60, arg1=<optimized 
out>, args=0x7fffe7f11160) at ../libguile/inline.h:305
#63 0x00007ffff7fb9678 in scm_srfi1_for_each (proc=0x7fffe7f11a30, 
arg1=0x7fffe7f065a0, args=0x404) at srfi-1.c:1516
#64 0x00007ffff7ed2f39 in deval (x=<optimized out>, env=<optimized out>, 
env@entry=0x7fffe7f05ee0) at eval.c:4367
#65 0x00007ffff7ed3154 in deval (x=0x7fffe80d80e0, env=0x7fffe7f05ee0, 
env@entry=0x7fffe7f06560) at ../libguile/inline.h:305
#66 0x00007ffff7ed27ab in deval (x=0x7fffe7f06120, x@entry=0x7fffe80df020, 
env=env@entry=0x7fffe7f06560) at ../libguile/inline.h:305
#67 0x00007ffff7ed0473 in scm_dapply (proc=0x7fffe80dea40, arg1=<optimized 
out>, args=0x7fffe7f06560) at ../libguile/inline.h:305
#68 0x000055555577e0a6 in Scm_variable::operator()(scm_unused_struct*) 
(arg1=<optimized out>, this=<optimized out>) at ./include/lily-modules.hh:73
#69 0x000055555577e0a6 in main_with_guile(void*, int, char**) () at main.cc:539
#70 0x00007ffff7eeb933 in invoke_main_func (body_data=0x7fffffffddc0) at 
init.c:367
#71 0x00007ffff7ec231e in c_body (d=d@entry=0x7fffffffdd60) at 
continuations.c:349
#72 0x00007ffff7f2a9fb in scm_c_catch
    (tag=tag@entry=0x104, body=body@entry=0x7ffff7ec2310 <c_body>, 
body_data=body_data@entry=0x7fffffffdd60, handler=handler@entry=0x7ffff7ec2330 
<c_handler>, handler_data=handler_data@entry=0x7fffffffdd60, 
pre_unwind_handler=pre_unwind_handler@entry=0x7ffff7f2b0f0 
<scm_handle_by_message_noexit>, pre_unwind_handler_data=0x0)
    at throw.c:203
#73 0x00007ffff7ec2938 in scm_i_with_continuation_barrier
    (body=body@entry=0x7ffff7ec2310 <c_body>, 
body_data=body_data@entry=0x7fffffffdd60, handler=handler@entry=0x7ffff7ec2330 
<c_handler>, handler_data=handler_data@entry=0x7fffffffdd60, 
pre_unwind_handler=0x7ffff7f2b0f0 <scm_handle_by_message_noexit>, 
pre_unwind_handler_data=pre_unwind_handler_data@entry=0x0) at 
continuations.c:325
#74 0x00007ffff7ec2a24 in scm_c_with_continuation_barrier 
(func=func@entry=0x7ffff7eeb910 <invoke_main_func>, 
data=data@entry=0x7fffffffddc0) at continuations.c:367
#75 0x00007ffff7f28d4a in scm_i_with_guile_and_parent (func=0x7ffff7eeb910 
<invoke_main_func>, data=0x7fffffffddc0, parent=<optimized out>) at 
threads.c:733
#76 0x00007ffff7eebac9 in scm_boot_guile
    (argc=argc@entry=2, argv=argv@entry=0x7fffffffdf58, 
main_func=main_func@entry=0x55555577dcf0 <main_with_guile(void*, int, char**)>, 
closure=closure@entry=0x0)
    at init.c:350
#77 0x00005555555d329a in main(int, char**, char**) (argc=2, 
argv=0x7fffffffdf58, envp=<optimized out>) at main.cc:853
(gdb) n
176       Stem_info si = Stem::get_stem_info (stem);
(gdb) p dir
$1 = DOWN
(gdb) p ph
$2 = {<Drul_array<double>> = {array_ = {-2.25, 1.8138940000000001}}, <No data 
fields>}
(gdb) n
177       ph[-dir] = si.shortest_y_;
(gdb) p si
$3 = {dir_ = DOWN, ideal_y_ = -3.5134024357837941, shortest_y_ = 
-2.2634024357837941}
(gdb) n
178       int beam_count = Stem::beam_multiplicity (stem).length () + 1;
(gdb) p ph
$4 = {<Drul_array<double>> = {array_ = {-2.25, -2.2634024357837941}}, <No data 
fields>}
(gdb) n
179       Real beam_translation = get_beam_translation (me);
(gdb) n
181       ph = ph - dir * max (beam_count, 1) * beam_translation;
(gdb) p beam_count
$5 = 1
(gdb) p ph
$6 = {<Drul_array<double>> = {array_ = {-2.25, -2.2634024357837941}}, <No data 
fields>}
(gdb) p dir
$7 = DOWN
(gdb) p bream_translation
No symbol "bream_translation" in current context.
(gdb) p beam_translation
$8 = 0.81000000000000005
(gdb) n
182       ph = ph - ph.center ();
(gdb) p ph
$9 = {<Drul_array<double>> = {array_ = {-1.4399999999999999, 
-1.453402435783794}}, <No data fields>}
(gdb) n
lilypond: ../flower/include/interval.hh:227: T Interval_t<T>::center() const 
[with T = double]: アサーション `!is_empty ()' に失敗しました。

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50        return ret;
(gdb) quit
A debugging session is active.

        Inferior 1 [process 28717] will be killed.

Quit anyway? (y or n) y
[tasaka1@localhost lilypond]$ exit
exit

スクリプト終了 2019-02-09 00:11:45+09:00
_______________________________________________
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond

Reply via email to