Mirror of Ardour Source Code
Find a file
Carl Hetherington 4e4306d125 Use Request::Pause rather than Request::Wait for
Butler::wait_until_finished. Otherwise the following bad
thing happens:

1.  The export code wants to call some Butler functions, so it calls
   calls Butler::wait_until_finished.
2.  This (used to) write Request::Wake into the butler's request pipe.
3.  Imagine that when this happens, the butler is already doing stuff.
4.  Meanwhile, Butler::wait_until_finished is waiting on Butler::paused.
5.  Some time later, the butler finishes its other stuff.
6.  Then it signals "paused".
7.  This causes Butler::wait_until_finished to return, so the export code
   thinks everything's ok and starts calling butler functions.
8.  Then the butler sees the Request::Wake, wakes up, and by unhappy coincidence
   ends up calling read on the same diskstream that the export code has just called.

This causes corruption of the Diskstream buffers, resulting in mantis #4283.

Using Request::Pause instead means that the butler will still wake in step #8,
but should_run will be false, so nothing much will happen and the export code
will be unimpeded.

For future reference, this bug was easiest to track down after adding a debugging
mutex to AudioDiskstream and then try-locking it in AudioDiskstream::_do_refill;
as far as I can see, _do_refill should never be called by two threads at the


git-svn-id: svn://localhost/ardour2/branches/3.0@11163 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-04 21:07:04 +00:00
doc Add notes on running unit tests. 2012-01-03 16:10:34 +00:00
export Upgrade to waf 1.6.7 and autowaf r52. 2011-09-29 19:17:54 +00:00
gtk2_ardour restore correct behaviour of undo/redo for tempo map drags 2012-01-04 20:40:06 +00:00
icons New zoom icons from royvegard (#4520). 2011-11-29 20:41:40 +00:00
libs Use Request::Pause rather than Request::Wait for 2012-01-04 21:07:04 +00:00
manual Revert internals of the last layering-related commit, and go back a slightly-cleaned-up version of how it was before. Remove all layering modes; only option now is add-is-higher. Move-add-higher could easily be re-added if anyone uses it. 2011-12-29 22:14:15 +00:00
midi_maps Patch from acolomb to fix installation of midi_maps (#4430). 2011-11-02 12:56:27 +00:00
patches most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
templates Un bit-rot the docbook manual build, just for kicks. 2011-12-21 00:55:57 +00:00
tools OS X packagin fix to pick up surfaces 2011-12-29 16:44:23 +00:00
vst Rename windows VST stuff with a Windows prefix. 2011-11-21 17:42:29 +00:00
.dir-locals.el Only use .dir-locals.el to set tab indentation (or not, for python). 2011-04-06 16:33:43 +00:00
.gitignore Save and Delete buttons for plugin presets, remove largely useless edit plugin presets dialog. Should fix #2662. 2010-12-15 01:06:57 +00:00
ardour-3.ttl Fix syntax error. 2009-11-09 14:13:59 +00:00
ardour.1 most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
ardour.1.es most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
ardour.1.fr most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
ardour.1.ru most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
ardour.dox Fix ardour2 -> ardour3 issues. 2009-02-18 18:32:13 +00:00
ardour.rc.in make 3.0 catch up with transport and other changes in 2.X (hand applied, not merged) 2009-10-30 18:14:25 +00:00
ardour_system_sae.rc most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
COPYING Initial revision 2005-05-13 20:47:18 +00:00
instant.xml most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
instant.xml.sae most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas.cc; builds and runs and does a few specific things but expect it to be buggy for a while yet 2008-12-12 14:43:24 +00:00
Makefile (FULL) not-yet-complete JACK session management patch (TODO: get program name, vary snapshot name, arrange quit when necessary) 2010-04-02 18:54:33 +00:00
PACKAGER_README fixes for various consistency/settings issues in monitor section; minor edit to PACKAGER_README 2010-03-17 16:01:58 +00:00
README changes from 2.X starting in march 2009 through oct 20 2009 (5826 inclusive) 2010-03-16 15:33:04 +00:00
testfile.flac ogg/flac support bits and pieces; fix up MIDI note dragging and front-edge trims; BROKEN IN PERCUSSIVE MODE FOR NOW 2009-10-06 22:07:10 +00:00
testfile.ogg ogg/flac support bits and pieces; fix up MIDI note dragging and front-edge trims; BROKEN IN PERCUSSIVE MODE FOR NOW 2009-10-06 22:07:10 +00:00
TRANSLATORS correct dir spelling 2011-11-21 23:21:05 +00:00
waf waf 1.6.7 plus drobilla autowaf.py rev 60 2011-11-21 22:21:04 +00:00
wscript Remove some wrongly commited stuff. Sorry\! 2011-12-27 00:57:20 +00:00

Please see the Ardour web site at http://ardour.org/ for all documentation..

For information on building ardour: http://ardour.org/building.