bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Regression in 2.14.2, dynamic cast crash introduced in commit 6f6369


From: Phil Holmes
Subject: Re: Regression in 2.14.2, dynamic cast crash introduced in commit 6f6369c0
Date: Tue, 8 Nov 2011 16:26:13 -0000

"Pavel Roskin" <address@hidden> wrote in message news:address@hidden
Hello!

Lilypond 2.14.2 and the current revision from stable/2.14 crash on this
file:

\version "2.14.2"
\score {
 \new PianoStaff <<
   \new Staff = "right" { \change Staff="left" }
   \new Staff = "left" { s1 }
 >>
 \layout { }
}

Bisection finds that the regression was introduced on the stable branch
(!!!) by this commit:

6f6369c0e143402296e51708fddb8e3cc875dd09 is the first bad commit
commit 6f6369c0e143402296e51708fddb8e3cc875dd09
Author: Joe Neeman <address@hidden>
Date:   Fri May 27 18:57:16 2011 +0300

   Emit not-quite-cross-staff beams in the right context.

   This is related to 1043 and possibly other bugs.  Previously,
   if a staff change happened immediately after the termination of
   an auto-engraved cross-staff beam, then the beam was parented
   to the wrong staff.  Now, every beam is parented to the context
   in which it began.

:040000 040000 9fb6f0e342f2e64ca9b56c2d6e0d02556895e983
f248a9e0cc58847fddc0ad98e7eb839b8d3dbc60 M lily

And that's what gdb shows for the current stable/2.14:

GNU LilyPond 2.14.2
Processing `bad.ly'
Parsing...
Interpreting music...
Program received signal SIGSEGV, Segmentation fault.
__cxxabiv1::__dynamic_cast (src_ptr=0x7fffffffffff, src_type=0xae1870,
dst_type=0xad9ea0, src2dst=-1)
at ../../../../libstdc++-v3/libsupc++/dyncast.cc:51 51   const
void *vtable = *static_cast <const void *const *> (src_ptr); (gdb) up
#1  0x000000000054cef4 in Engraver_group::announce_grob (this=0xc8c840,
info=...) at engraver-group.cc:83 83     : 0; (gdb) l
78     }
79
80   Engraver_group *dad_eng
81     = dad_con
82     ? dynamic_cast<Engraver_group *> (dad_con->implementation
()) 83     : 0;
84
85   if (dad_eng)
86     dad_eng->announce_grob (info);
87 }
(gdb)

dad_con was introduced by the commit in question.  It looks like
dad_con->implementation is of a wrong type.  I hope it should be easy
to fix for somebody who knows C++.

--
Regards,
Pavel Roskin

Using Windows and any version 2.14 and 2.15.15 I don't get a crash. Which OS are you using, please?

--
Phil Holmes
Bug Squad





reply via email to

[Prev in Thread] Current Thread [Next in Thread]