fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Fluidsynth always crashing on Windows after syncing


From: Tom M.
Subject: Re: [fluid-dev] Fluidsynth always crashing on Windows after syncing
Date: Sat, 28 Oct 2017 17:58:20 +0200

Will look into this later. In the meantime, could you file an issue at github? That might be a better place to continue discussion.

Tom

2017-10-28 15:45 GMT+02:00 Carlo Bramini <address@hidden>:
Hello,
I synced my source tree with the latest changes in the repository, but after that my Fluidsynth brutally crashed every time I launched it.
After an hour of debugging and regression tests, I think I have found the cause.
The cause of all my troubles seems to be into src/utils/fluid_settings.c and after the change "avoid accessing uninited memory":

https://github.com/FluidSynth/fluidsynth/commit/36d8f9558448e16765198b0bdce894085949dc1c

But Fluidsynth crashed because two other bugs:

1) after adding that "num--;" in this commit, the test in this line:
https://github.com/FluidSynth/fluidsynth/blob/master/src/utils/fluid_settings.c#L425
fails and so it tries to do FLUID_LOG() message. But while the format string has a "%s" inside, you pass name[n] as parameter. name[n] is a character, not a pointer, so it crashed inside the printf() because it was an invalid address. Perhaps, you wanted to write token[n] instead.

2) After fixing (1), it also crashed into delete_fluid_ringbuffer().
This function was called by delete_fluid_rvoice_eventhandler().
And delete_fluid_rvoice_eventhandler() was called by new_fluid_rvoice_eventhandler().
Inside new_fluid_rvoice_eventhandler(), new_fluid_ringbuffer() returned NULL because the above commit, so it jumped to "error_recovery" label. But since handler->queue is NULL at this stage, the access to queue->array inside delete_fluid_ringbuffer() causes a segmentation fault.
After doing "if (queue != NULL) {" before the two free(), this crash has been also fixed.

However, although these two bugs were fixed, Fluidsynth still did not work.
This is what it is printed on the console:

============
fluidsynth: warning: 'synth.overflow.percussion' is not a node
fluidsynth: warning: 'synth.overflow.sustained' is not a node
fluidsynth: warning: 'synth.overflow.released' is not a node
fluidsynth: warning: 'synth.overflow.age' is not a node
fluidsynth: warning: 'synth.overflow.volume' is not a node
fluidsynth: warning: Requested number of audio channels is smaller than 1. Changing this setting to 1.
fluidsynth: warning: Requested number of audio groups is smaller than 1. Changing this setting to 1.
fluidsynth: warning: Invalid number of effects channels (0).Setting effects channels to 2.
============

I do not know eactly what you wanted to do with this change, but after reverting the commit, everything started to work again and normally.

Sincerely,

Carlo Bramini

_______________________________________________
fluid-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fluid-dev


reply via email to

[Prev in Thread] Current Thread [Next in Thread]