fluid-dev
[Top][All Lists]
Advanced

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

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


From: Carlo Bramini
Subject: [fluid-dev] Fluidsynth always crashing on Windows after syncing
Date: Sat, 28 Oct 2017 15:45:18 +0200 (CEST)

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



reply via email to

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