<br><br><div class="gmail_quote">On Sun, Mar 1, 2009 at 2:07 PM, Martin Profittlich <span dir="ltr"><<a href="mailto:martin@profittlich.com">martin@profittlich.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello!<br>
<br>
The current SVN version of ardourvst (2.0-ongoing, rev. 4709) crashes<br>
when I try to freeze a track with a VST plugin (Guitar Rig in my case).<br>
This happens because during freeze two threads are accessing the plugin<br>
at the same time. If I put a mutex around processReplacing() in<br>
vst_plugin.cc, the freeze completes, but of course with a horrible<br>
performance due to locking (xruns galore) and with audible artifacts,<br>
because time-based effects get confused by the merged stream.</blockquote><div><br>nice detective work. can you show me a backtrace of the dual thread access? <br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

I guess the two threads are the freeze thread and the regular JACK<br>
thread. Is this correct?<br>
<br>
I think the solution would be to prevent the JACK thread from accessing<br>
the plugin during freeze altogether, but I'm not sure what the proper<br>
way to do this is. Any suggestions?</blockquote><div><br>it should be possible by setting Session::processing_prohibited, see for example libs/ardour/session.cc:4106<br> </div></div><br>