Found the problem!
It seams, that there is a must have operation before every initstate_r
function:
>>memset(random_state, 0, sizeof(random_state));
>>memset(&random_buf, 0, sizeof(random_buf));
if (initstate_r(synth->random(), random_state,
sizeof(random_state), &random_buf))
adding these 2 first operations solved the problem. How it worked
before? don't know what to say... :)
I've added those 2 memsets before every initstate_r call (in
SynthEngone.cpp and OscilGen.cpp)
Will, can you update and retest again?
Regards,
Andrew
> Hi, Will!
>> On Thu, 30 Oct 2014 21:56:32 +0400
>> Andrew Deryabin <[email protected]> wrote:
>>
>>> Hi, all!
>>>
>>> I've merged my recent commits to lv2_plugin branch into master.
>>> Before actual work on lv2 plugin interface (though core lv2 methods
>>> already implemented in pre-alpha state) I want to optimize and expand
>>> yoshimi in several ways.
>>>
>>> One of them - multi instance support. Now there is possibility to
>>> run many instances of yoshimi in single process. There is a cut from
>>> modified changelog:
>>>
>>> - Made yoshimi support multiple in-process instances:
>>> 1) Added "New instance" menu item in "Yoshimi" submemu.
>>> 2) Jack/alsa midi/audio port names are named "yoshimi" + postfix
>>> (empty for the first instance and -1,-2,-3 etc.. for the next).
>>> 3) Windows names (main window, panel, keyboad) are named according
>>> to instance number with unique postfix.
>>> 4) Only main window of the first instance exits process.
>>>
>>> Many testers are welcome! :)
>>>
>>> Regards,
>>> Andrew
>>
>> OK, some first tests.
>>
>> When I first compiled and ran this, I loaded up a patch set then as
>> soon as I
>> tried to start another instance it failed with a segfault. Start the
>> second
>> instance *before* loading any parameter sets and it seems to be OK.
>>
>> On one occasion opening then closing the panel window while running
>> MIDI from
>> Rosegarden also segfaulted, but I can't reliably repeat this one.
>>
>> Having 3 instances, but only using the first 2 seemed to run very
>> reliably,
>> and that was with me doing quite a lot of GUI stuff while the music
>> was playing,
>> so I wonder if this is some kind of memory allocation problem.
>>
>> I can't close instances once they are running! Neither the windows
>> close button
>> nor the menu one works. However, closing the 'master' one closed them
>> all
>> cleanly.
>>
>> Nevertheless, this looks a very impressive start!
> It's good, that you've successfully tested core functions. I also have
> random crashes, and it seems that the reason is in initstate_r
> function and friends. Now searching for a problem in this code. It
> successfully worked for single instance, but somehow goes wrong in
> multi-instance setups.
>
> P.S. Now made last static vars in OscilGen per-instance ones and got
> crash on yoshimi init. the crash was on initstate_r function. That's
> may be the reason. It's very interesting to find he reason now :)
>
>>
>> P.S.
>> Rosegarden picked up the instances in exactly the same way as it does
>> when I
>> launch them individually from file.
>>
> Good! It seams that I made right naming scheme.
>
> Regards,
> Andrew
>
------------------------------------------------------------------------------
_______________________________________________
Yoshimi-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel