-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NaN formula values crash Surge XT when a note is played #5566
Comments
Great reports this morning! Thanks so much!! |
Just FYI no need to put XT in the title since we're not going back to fixing 1.9 so everything that is reported already basically pertains to XT. Thanks! |
Alright, I'll drop the prefix then. |
on my mac this doesn't crash but does of course produce garbage |
but first let me fire up linux and see if it crashes there. |
Confirmed that the crash happens on standalone as well. |
Right so there's a few things happening here First of all the juce path renderer on linux throws exceptions with nans. Fine. But more importantly, our limit_range assumes a finite input so with a nan all our checks blow up. The particular stack in this case happens in SurgeVoice where we use the pitch to interpolate across a 2^x interpolation array in the filter blah blah and it would be fine if we were accidentally out of bounds as long as we are finite I don't want to make limit_range check std::isfinite. We use that everywhere. So the fix I propose - since we have made sure all the rest of the modulators never make nan and we can't guarantee that with lua - is to just check isfinite on the outbound of the formula modulator, set a flag, and voila. Will do that now. |
NaN and Inf from formula would rip through the engine and blow through various checks and so on. So inside formula do an explicit std::isfinite and set a flag if they return these. Closes surge-synthesizer#5566
NaN and Inf from formula would rip through the engine and blow through various checks and so on. So inside formula do an explicit std::isfinite and set a flag if they return these. Closes surge-synthesizer#5566
NaN and Inf from formula would rip through the engine and blow through various checks and so on. So inside formula do an explicit std::isfinite and set a flag if they return these. Also add a unit test of the behavior. Closes surge-synthesizer#5566
NaN and Inf from formula would rip through the engine and blow through various checks and so on. So inside formula do an explicit std::isfinite and set a flag if they return these. Also add a unit test of the behavior. Closes #5566
Bug Description:
NaN formula values crash Surge XT when a note is played.
Surge Version
Surge XT 0.99.main.007a427
Reproduction Steps:
Steps to reproduce the behavior:
Expected Behavior:
No sound is played and additionally an error message is displayed in some method.
Screenshots:
Computer Information (please complete the following information):
The text was updated successfully, but these errors were encountered: