MantisBT

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0007070ardourbugspublic2016-10-12 12:232017-01-25 14:43
Reportercolinf 
Assigned Topaul 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version5.X git (version in description) 
Target VersionFixed in Version5.X git (version in description) 
Summary0007070: Automation controls set to "Play" mark session dirty at transport stop
DescriptionI've observed this in 5.4-104-ge4edd8e, but I think it may be a side-effect of adding VCAs, so it presumably came in around 5.0.
Steps To Reproduce* set a fader's automation state to "Play"
* roll transport
* stop transport - observe '*' in title bar indicating session is unsaved
Additional InformationSetting a breakpoint in Session::set_dirty() gets me here:

Thread 22 "ardour-5.4.85" hit Breakpoint 3, ARDOUR::Session::set_dirty (
    this=0x1f4fb20) at ../libs/ardour/session_state.cc:3392
3392 bool was_dirty = dirty();
(gdb) bt
#0 ARDOUR::Session::set_dirty (this=0x1f4fb20) at ../libs/ardour/session_state.cc:3392
#1 0x00007ffff69419c3 in ARDOUR::SlavableAutomationControl::actually_set_value (this=0x494be00, val=1, group_override=PBD::Controllable::NoGroup)
    at ../libs/ardour/slavable_automation_control.cc:117
#2 0x00007ffff639a116 in ARDOUR::AutomationControl::set_value_unchecked (this=0x494be00, val=1) at /home/colinf/src/ardour2/ardour/libs/ardour/ardour/automation_control.h:108
#3 0x00007ffff63984d0 in ARDOUR::Automatable::transport_stopped (this=0x494b020, now=997376) at ../libs/ardour/automatable.cc:422
#4 0x00007ffff6802fcf in ARDOUR::Route::nonrealtime_handle_transport_stopped (this=0x494ac20, can_flush_processors=true) at ../libs/ardour/route.cc:3212
#5 0x00007ffff6934411 in ARDOUR::Session::non_realtime_stop (this=0x1f4fb20, abort=false, on_entry=1, finished=@0x7fffad733f6f: true) at ../libs/ardour/session_transport.cc:733
#6 0x00007ffff69331a1 in ARDOUR::Session::butler_transport_work (this=0x1f4fb20) at ../libs/ardour/session_transport.cc:449
#7 0x00007ffff63c0f73 in ARDOUR::Butler::thread_work (this=0x1f4c7b0) at ../libs/ardour/butler.cc:208
#8 0x00007ffff63c0833 in ARDOUR::Butler::_thread_work (arg=0x1f4c7b0) at ../libs/ardour/butler.cc:156
#9 0x00007ffff4b11df2 in fake_thread_start (arg=0x3f49190) at ../libs/pbd/pthread_utils.cc:101
#10 0x00007fffef69c464 in start_thread (arg=0x7fffad735800) at pthread_create.c:333
#11 0x00007fffec3d797f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105

I'm not sure whether SlavableAutomationControl::actually_set_value() is wrong to unconditionally call set_dirty(), but clearly something isn't quite right.
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0018791)
paul (administrator)
2016-10-12 14:27

almost certainly fixed in c104c9d

confirmation and feedback appreciated.
(0018800)
colinf (updater)
2016-10-13 04:45

Yes, seems to work as Id' expect now. Cheers!
(0018815)
colinf (updater)
2016-10-14 11:53

Well, it was fixed in c104c9d4, but it's broken again after 9066dd73...
(0018816)
paul (administrator)
2016-10-14 12:21

hmm, i thought i checked the same precise thing and it seemed OK. i guess i'll do it again ...
(0018826)
colinf (updater)
2016-10-16 04:38

I re-instated the commented-out debug output in AutomationControl::actually_set_value() to see whether I could see any better what was going on, and noticed that it then works as expected if the automation control is set to play, but has no automated changes of value - the session is not marked dirty on stop. This is different behaviour from when the debug output is not there. Precision issues with "if (old_value != value)", maybe?

Also, if the control has automation that changes its value, the session is still marked dirty. This doesn't seem right to me, and isn't (as far as I remember) how it used to work back in 4.x.
(0018827)
paul (administrator)
2016-10-16 12:52

new and improved fix is (hopefully) in 524f0c7
(0019312)
colinf (updater)
2017-01-25 14:42

Yes, now works as expected.

- Issue History
Date Modified Username Field Change
2016-10-12 12:23 colinf New Issue
2016-10-12 12:23 colinf Summary Automation controls set to "Play2 mark session dirty at transport stop => Automation controls set to "Play" mark session dirty at transport stop
2016-10-12 14:27 paul Note Added: 0018791
2016-10-12 14:27 paul Assigned To => paul
2016-10-12 14:27 paul Status new => feedback
2016-10-13 04:45 colinf Note Added: 0018800
2016-10-13 04:45 colinf Status feedback => assigned
2016-10-14 11:53 colinf Note Added: 0018815
2016-10-14 12:21 paul Note Added: 0018816
2016-10-16 04:38 colinf Note Added: 0018826
2016-10-16 12:52 paul Note Added: 0018827
2017-01-25 14:42 colinf Note Added: 0019312
2017-01-25 14:42 colinf Status assigned => resolved
2017-01-25 14:42 colinf Fixed in Version => 5.X git (version in description)
2017-01-25 14:42 colinf Resolution open => fixed


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker