Subject: Segmentation fault

From: Jean ABOU SAMRA <[email-masked]>
Date: Thu, 7 Feb 2019 17:48:49 +0100

Bonjour,
En voulant donner un exemple à Aiki, je suis tombé sur un bug un peu étrange.
J'ai voulu changer le style regroupement des portées. Comme systemStartDelimiter s'écrit avec une minuscule au début, j'ai d'abord pensé que SystemStartTruc devait aussi s'écrire avec une minuscule, ce qui n'est en fait pas le cas.
Mais à la compilation, LilyPond ne me donne pas une erreur gentille comme d'habitude. Il écrit simplement : « segmentation fault: 11 », et s'arrête.
Je crois savoir que ce sont des erreurs de mémoire quand on programme en C/C++ (réputées difficiles à résoudre).
Voici mon exemple minimal :

\version "2.21.0"

\new ChoirStaff <<
  % OK
   % \set ChoirStaff.systemStartDelimiter = #'SystemStartBrace
  % segmentation fault
   \set ChoirStaff.systemStartDelimiter = #'unknownName
  { c' }

Cela change du comportement habituel pour les erreurs de nom. Par exemple, le code
{
\set Staff.noPropertyHere = "value"
c'
}
générera l'erreur propre et compréhensible
Avertissement : vérification du type de propriété pour « noPropertyHere » (translation-type?) non trouvée  Probable faute de frappe

Serait-il possible que le message soit clair comme d'habitude, et que la compilation continue malgré l'erreur ?

Merci,
Jean Abou Samra.

---

From: Valentin Villenave <[email-masked]>
Date: Thu, 7 Feb 2019 19:15:24 +0000

> En voulant donner un exemple à Aiki, je suis tombé sur un bug un peu

Effectivement, jolie trouvaille !

> J'ai voulu changer le style regroupement des portées. Comme
> systemStartDelimiter s'écrit avec une minuscule au début, j'ai d'abord pensé
> que SystemStartTruc devait aussi s'écrire avec une minuscule, ce qui n'est
> en fait pas le cas.

Eh non. Parce que SystemStartTruc est en fait non pas une propriété,
mais un objet graphique ("Grob"). Tout comme NoteHead, Stem,
PhrasingSlur et j’en passe… donc: capitale.

> Mais à la compilation, LilyPond ne me donne pas une erreur gentille comme
> d'habitude. Il écrit simplement : « segmentation fault: 11 », et s'arrête.

Oui. C’est une erreur peu courante car aucune autre propriété ne
permet d’imprimer directement un Grob (les autres propriétés modifient
simplement des Grobs déjà définis).

Je viens de la soumettre (avec un patch pour la résoudre) ici :
https://sourceforge.net/p/testlilyissues/issues/5474/

Cordialement,
V. V.