On Mon, Dec 17, 2012 at 05:21:05AM -0800, Eluze wrote: > Colin Hall-3 wrote > > OK, it looks like I have misunderstood the intention of your original > > bug report, Eluze. > > > > Please specify the circumstances under which you would like to see a > > warning. > > ok, I'll try to be more precise: > > with the code (admittedly wrong) > > { \set Fingering = #'(up) g1 -1 } > > LilyPond stops working and the log only says: > > GNU LilyPond 2.17.8 > Processing `test.ly' > Parsing... > Interpreting music...
I just tried reproducing the behaviour and on my system. I see the output you describe followed by a report of a segmentation fault and core dump. It's a crash, as you said in your original bug report. You have made it clear that you were knowingly mis-using the Fingering object. I'm not familiar with the Fingering object so I went and looked it up. There's some quite detailed documentation in the Internals Reference: http://www.lilypond.org/doc/v2.17/Documentation/notation/layout-interfaces If you scroll to the bottom of that section you can see that Fingering is defined as a complicated Lisp object: (Fingering . ((padding . 0.5) (avoid-slur . around) (slur-padding . 0.2) (staff-padding . 0.5) (self-alignment-X . 0) (self-alignment-Y . 0) (script-priority . 100) (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (meta . ((class . Item) (interfaces . (finger-interface font-interface text-script-interface text-interface side-position-interface self-alignment-interface item-interface)))))) So when you put this in your source file: \set Fingering = #'(up) you are replacing a large, complicated structure with something utterly different. If this badly mangled structure is not used, as you discovered, nothing bad happens. If it is used, a crash occurs. I would imagine that the crash happens when that Lisp structure is passed across the Lisp/C boundary. Lilypond does report line numbers where it detects errors in the source. I guess you are hoping for something similar for crashes, also. I don't know, but I suspect that the crash we witness occurs long after the correspondence between source line and the Finger-structure-mangling has been lost. This sounds pretty fundamental to me and I'm really not sure it's feasible without a big redesign. As I think I said before, I suspect this is the down side of the wonderful flexibility of Lilypond that allows you to \set anthing to be anything you like, without contraint. > if it's not possible to locate/identify the error causing command a simple > message like "LilyPond stopped working" or "LilyPond ended abnormally" plus > a "normal" termination would be better than nothing. The trouble is that a segmentation fault means that Lilypond has been terminated by the operating system, and not by software that is part of Lilypond. So no, I don't think even a simple helpful message is possible. There may be operating system services to do this, but I am not aware of them. Cheers, Colin. -- Colin Hall _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel