Subject: Limites de LilyPond ?

From: Seventies <[email-masked]>
Date: Tue, 16 Feb 2021 08:58:32 -0700 (MST)

Bonsoir à l'équipe,

Je rencontre un problème de compilation interrompue pour cause d'erreur dans
"Microsoft Visual C++ Runtime Library". Le message affiche "This application
has requested the Runtime to terminate it in an unusual way. Please contact
the application's support team for more information".
Toutefois, la compilation se prolonge encore quelques secondes avant le
message fatal :
"Dessin des systèmes...terminate called after throwing an instance of
'std::bad_alloc'
  what():  St9bad_alloc"
Aucun renseignement complémentaire, numéro d'erreur ou numéro de ligne.

Il s'agit toutefois d'une toute grosse compilation : le second concerto pour
piano de Brahms. Il est compilé en deux versions, une version A4 classique,
et une version grand format (B4) avec une portée par instrument (les portées
des vents sont donc dédoublées). C'est cette seconde version qui bloque lors
du calcul.

Le problème est que précédemment, tout fonctionnait parfaitement. Le dernier
PDF correct date de février 2018. À cette époque, j'étais sous Windows 7,
sans doute 32 bits. Mais j'ai essayé sous 32 ou 64 bits, ou sous Windows 10,
toujours le même blocage. J'ai essayé sur un système tout nouvellement
installé, même problème.

Je travaille sous la version 2.18.2.

Je suspecte une mise à jour malheureuse de la librairie Microsoft, mais
j'hésite à mettre les mains dans le cambouis. Comment réinstaller une
ancienne version ? où la trouver ? où la réinstaller ? ça fait beaucoup de
questions hasardeuses.

Il faut encore signaler que les deux "formats" de partition signalés plus
haut ne sont pas trop différents : 3% en plus pour la version B4 par rapport
à l'A4.

Et pour être complet, je dispose d'une partition plus grande encore (en
terme de volume du PDF), la septième symphonie de Dvorak. Je ne pense donc
pas avoir atteint une "limite supérieure" de LilyPond.

J'ai tenté la version de Lily 2.22, mais la compilation donne des centaines
d'erreurs, se termine par une erreur fatale (sans autre précision), mais
génère un PDF avec de très nombreuses erreurs. La conversion vers la version
2.22 paraît donc une solution, mais avec de très nombreuses modifications du
code. Je préfère chercher d'abord la cause de l'erreur actuelle avant de
m'engager sur cette voie assez longue.

Je reste donc ouvert à toutes vos suggestions, mais actuellement, je ne vois
aucune direction vers laquelle chercher pour tout simplement retrouver la
situation correcte qui existait il y a trois ans ...

Cordialement,
Jean-François

-----
Liste des partitions LilyPond en http://www.espace-midi.com/lilypond
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: Jacques Menu <[email-masked]>
Date: Tue, 16 Feb 2021 17:01:47 +0100

Bonjour Jean-François,

J’utilise la 2.20 à satisfaction, vous devriez essayer La 2.22 n’est pas encore bonne sur ma machine, mais je n’ai pas le temps d’investiguer ça.

JM

> Le 16 févr. 2021 à 16:58, Seventies <[email-masked]> a écrit :
> 
> Bonsoir à l'équipe,
>

---

From: Seventies <[email-masked]>
Date: Wed, 17 Feb 2021 02:18:45 -0700 (MST)

C'est exact, j'ai essayé la version 2.20, qui me donne également un nombre
impressionnant d'erreurs et un PDF avec de nombreuses erreurs (octaviations,
décalages, etc).
Mais ce projet comporte plus de 170 fichiers qu'il faudrait relire et mettre
à jour, un travail titanesque.

Aussi, ma question principale reste la suivante : pourquoi un système qui
fonctionnait ne fonctionne plus du jour au lendemain ?

LilyPond, c'est la création de partition et sa maintenance. Quand j'ai une
"petite" correction à apporter sur un projet (une altération oubliée, une
nuance mal placée), je souhaiterais la corriger en cinq minutes
(réinstallation temporaire de l'ancienne version) et pas recommencer dix
mois de travail.
Je dispose d'un projet réalisé avec la version 2.13, et s'il y a une
correction à faire il suffit de réinstaller cette vieille version et faire
la correction. Je pense que c'est l'esprit des versions successives de notre
Lily.

Je continue un peu à fouiner du côté de la librairie Visual C++, je pense
que le problème est là, mais là, je rame ...

Cordialement,

Jean-François

-----

---

From: Jean Abou Samra <[email-masked]>
Date: Wed, 17 Feb 2021 21:39:28 +0100

> situation correcte qui existait il y a trois ans ...

Bonjour,

Un std::bad_alloc indique, me semble-t-il, que le programme
ne trouve tout simplement plus assez de mémoire dans
l'ordinateur pour continuer. Jacques, je ne me trompe pas ?

La mémoire utilisée peut dépendre de plusieurs paramètres.
Il est possible que vous ayez rasé la limite de mémoire
lors des compilations de l'époque, et qu'elle soit maintenant
atteinte pour une raison quelconque.

Le seul conseil que je puisse donner, c'est de séparer votre
partition en plusieurs morceaux (sûrement les mouvements)
et de les compiler séparément, puis de rassembler les fichiers
PDF obtenus...

Ou bien, à tout hasard, installer le Windows Subsystem for
Linux et faire tourner LilyPond là-dedans ? Cela pourrait
fonctionner si d'aventure le problème était relié à une
bizarrerie de Windows récent (ce qui n'arrive vraiment,
mais alors vraiment pas souvent...).

Désolé de ne pas pouvoir aider plus, vous semblez toucher
aux limites de votre machine.

Cordialement,
Jean

---

From: Jacques Menu <[email-masked]>
Date: Thu, 18 Feb 2021 10:19:52 +0100

Bonjour,

Effectivement, c’est un manque de mémoire :

	http://www.cplusplus.com/reference/new/bad_alloc/

class bad_alloc;
Exception thrown on failure allocating memory

Il y a cette discussion pas très ancienne :
	 http://lilypond.1069038.n5.nabble.com/How-to-debug-std-bad-alloc-td147012.html <http://lilypond.1069038.n5.nabble.com/How-to-debug-std-bad-alloc-td147012.html>, 
où Jean-Charles donne des indications sur ce qu’on peut essayer de faire dans ce cas.

JM

---

From: Christophe Pochon <[email-masked]>
Date: Thu, 18 Feb 2021 10:42:06 +0100

Bonjour,

Il me semble que le problème a déjà été abordé sur cette liste et qu'une
astuce qui avait aidé était \pointAndClickOff , si ce n'est pas déjà fait.

A+

Christophe Pochon

Le jeu. 18 févr. 2021 à 10:19, Jacques Menu <[email-masked]> a
écrit :

> http://lilypond.1069038.n5.nabble.com/How-to-debug-std-bad-alloc-td147012.html
> ,

---

From: Xavier Scheuer <[email-masked]>
Date: Thu, 18 Feb 2021 10:57:45 +0100

Bonjour,

Mettez-vous bien vos fichiers à jour avec convert-ly avant de les compiler
avec la nouvelle version ?
En règle générale convert-ly est très efficace et j'ai très rarement le cas
d'un fichier qui fonctionnait avec une version qui soudainement produirait
des erreurs après une mise à jour.

> (réinstallation temporaire de l'ancienne version) et pas recommencer dix

J'essaie de concentrer toutes mes "définitions personnelles" dans un
fichier "defs.ily" que j'appelle dans chaque partition d'une œuvre. Ainsi
les autres fichiers contiennent essentiellement des notes et indications
standard dont la syntaxe ne devrait pas changer avec les nouvelles
versions. Au final seul mon fichier "defs.ily" doit être mis à jour.

> la correction. Je pense que c'est l'esprit des versions successives de
notre

C'est déjà un avantage conséquent du logiciel libre par rapport à certains
logiciels commerciaux dont il n'est parfois plus possible d'utiliser un
fichier généré des années et versions plus tôt.

> que le problème est là, mais là, je rame ...

En plus des autres conseils je suggère l'utilisation de \bookpart dans le
cas où un saut de page entre 2 mouvements est de toute façon
prévu/souhaité. Cela simplifie et accélère grandement le calcul des sauts
de ligne et de page (et probablement aide aussi en cas de problème de
mémoire).

Cordialement,
Xavier

-- 
Xavier Scheuer <[email-masked]>

---

From: Seventies <[email-masked]>
Date: Sat, 20 Feb 2021 02:41:48 -0700 (MST)

Merci de toutes vos réponses et suggestions. Sans doute, ici j'ai
"chatouillé" les limites de LilyPond, et dès que j'aurai l'occasion, je
tenterai une compilation sous XP, qui était tout de même plus léger que les
OS actuels.

Et pour Xavier, oui, merci pour tous ces conseils. J'en utilise déjà pas
mal, et chaque réalisation est l'occasion de créer de nouvelles définitions,
et de simplifier largement le code de la partition ... à condition d'être
bien ordonné, et là, il me reste pas mal de progrès à réaliser 

Cordialement,
Jean-François

-----