Stack-smashing is triggered by code inside the gcc compiler that's

designed to detect and avoid buffer overflows. What's happening

(probably) is that you're popping more values off the stack than you

pushed on and threatening to read into an illegal memory location just

beyond the pointer to which the bottom of the stack points.

If you disable the protection variables in the gcc compiler that are

designed to serve as extra buffers on the stack by using

-fno-stack-protection, you'll get more information but also probably a

segfault and full crash. The segfault will occur due to the compiler

trying to read beyond the bottom of the stack into an illegal memory

location and the kernel calling a full halt due to the illegal

operation.

The underlying reason for this error is probably that you're trying

to use too many points in the slur, which I would guess is handled by

pushing values onto and popping values off the stack that controls the

slur. This most likely results from trying to use a high-order

polynomial for the slur.

There's no need to use a higher-order polynomial for the slur,

especially since this produce's Runge's Phenomenon, in which the slur

(polynomial curve) wiggles increasingly badly in between the control

points as the order of the polynomial rises.

https://en.wikipedia.org/wiki/Runge%27s_phenomenon A cubic spline should prove entirely adequate regardless of the

number of control points. A cubic spline avoids Runge's Phenomenon and

also yields a curve guaranteed to exhibit a smooth first and second

derivative, which is pretty much all you need. (Why would you need a

discontinuous 5th derivative, for example, in your slur?)

Reducing the degree of the polynomial _should_ eliminate the

stack-smashing error. Guessing that the size of the stack used in the

slur is matched to the degree of the polynomial, and going to higher

order polynomials without changing the stack size produces the error.

2nd or 3rd order spline polynomials should be perfectly adequate for

any reasonable slur it's possible to imagine. If you need sharp

discontinuous jumps during the slur, this can better be achieved by

ending the previous note and starting a new note with a new slur.

A discontinuity in the slur where the derivative becomes undefined is

the only reason I can imagine why you'd need a higher-order polynomial

for the spline that defines the slur.

Remember that the number of control points is entirely unrelated to

the degree of the cubic spline. You can have 100 control points but

you will still only need a third degree polynomial for the cubic

spline.

_______________________________________________

lilypond-devel mailing list

[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-devel