[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
- [fluid-dev] Fluidsynth always crashing on Windows after syncing,
Carlo Bramini <=