[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Crash with simultaneous-duplicating music function and \once\offset
From: |
Aaron Hill |
Subject: |
Re: Crash with simultaneous-duplicating music function and \once\offset |
Date: |
Sun, 15 Jul 2018 20:09:52 -0700 |
User-agent: |
Roundcube Webmail/1.3.6 |
On 2018-07-15 18:21, Simon Albrecht wrote:
Hello everybody,
this combination of a custom music function that combines the music
simultaneously with itself and a \once\offset command causes LilyPond
to crash (exit with return code 11):
%%%%%%%%%%%%
\version "2.19.82"
test =
#(define-music-function (parser location mus) (ly:music?)
#{ << $mus $mus >> #})
\test { \once\offset length 1 Stem 4 }
%%%%%%%%%%%%
Seems the custom music function is not needed to reproduce a crash.
%%%%
\version "2.19.82"
music = { \once \offset length 5 Stem 4 4 }
<< \music \music >>
%%%%
This also results in:
GNU LilyPond 2.19.82
Processing `crash.ly'
Parsing...
Interpreting music...
Preprocessing graphical objects...
fish: “lilypond crash.ly” terminated by signal SIGSEGV (Address
boundary error)
Omitting the \once lets the example compile. And use of \undo works in
lieu of \once:
%%%%
\version "2.19.82"
longStem = \offset length 5 Stem
music = { \longStem 4 \undo \longStem 4 }
<< \music \music >>
%%%%
However, attempting to test the "tweak" variant of \offset...
%%%%
\version "2.19.82"
music = { \offset Stem.length 5 4 4 }
<< \music \music >>
%%%%
...produced a different error:
GNU LilyPond 2.19.82
Processing `crash.ly'
Parsing...
Interpreting music...lilypond:
/home/gub/NewGub/gub/target/linux-64/src/lilypond-git.sv.gnu.org--lilypond.git-stable-2.20/lily/context-def.cc:232:
std::vector<Context_def*>
Context_def::internal_path_to_acceptable_context(SCM, Output_def*, SCM,
std::set<const Context_def*>*) const: Assertion `(!(6 & ((scm_t_bits)
(0? (*(SCM*)0=(type_sym)): type_sym))) && ((0x7f & ((((scm_t_bits) (0?
(*(SCM*)0=((((SCM *)((scm_t_cell *) (((scm_t_bits) (0?
(*(SCM*)0=((((type_sym))))): (((type_sym)))))))) [((0))]))): (((SCM
*)((scm_t_cell *) (((scm_t_bits) (0? (*(SCM*)0=((((type_sym))))):
(((type_sym)))))))) [((0))])))))) == 5))' failed.
fish: “lilypond crash.ly” terminated by signal SIGABRT (Abort)
Figuring that perhaps the parser is confused by the naked duration, I
tried this:
%%%%
\version "2.19.82"
music = { \offset Stem.length 5 c'4 4 }
<< \music \music >>
%%%%
It compiles, but produces two staves as output rather than combining the
notes on one staff. I am almost certainly overlooking an important
detail in parsing which would explain this difference, but it is still
confusing to say the least.
-- Aaron Hill
- Crash with simultaneous-duplicating music function and \once\offset, Simon Albrecht, 2018/07/15
- Re: Crash with simultaneous-duplicating music function and \once\offset,
Aaron Hill <=
- Re: Crash with simultaneous-duplicating music function and onceoffset, James Lowe, 2018/07/16
- Re: Crash with simultaneous-duplicating music function and \once\offset, Aaron Hill, 2018/07/16
- Re: Crash with simultaneous-duplicating music function and \once\offset, David Kastrup, 2018/07/17
- Re: Crash with simultaneous-duplicating music function and \once\offset, Aaron Hill, 2018/07/17
- Re: Crash with simultaneous-duplicating music function and \once\offset, David Kastrup, 2018/07/17
- Re: Crash with simultaneous-duplicating music function and \once\offset, Simon Albrecht, 2018/07/17
Re: Crash with simultaneous-duplicating music function and \once\offset, David Kastrup, 2018/07/18