View Issue Details

IDProjectCategoryView StatusLast Update
0001797ardourbugspublic2020-04-19 20:12
Reportergiso Assigned Topaul  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version2.0 
Summary0001797: pushing 'prev_track' on frontier tranzport causes ardour2 to deadlock
Descriptiona) When pushing the 'prev_track' button on a tranzport device and the first route (master) is selected, ardour2 goes into a dead-lock causing 100% CPU load

b) selecting the last route is not possible with the tranzport device

Both problems seem to be in file libs/surfaces/control_protocol/control_protocol.cc, a solution for a is to change in function

void
ControlProtocol::prev_track (uint32_t initial_id)

near line 98 the type of variable 'id' from uint32_t to int32_t. The problem is a comparison if( id >= 0), which is always true.
TagsNo tags attached.

Activities

2007-07-30 18:13

 

bug1797_deadlock_and_trackselection.diff (919 bytes)   
--- ardour-2.0.3-orig/libs/surfaces/control_protocol/control_protocol.cc	2007-05-10 13:30:45.000000000 +0200
+++ ardour-2.0.3/libs/surfaces/control_protocol/control_protocol.cc	2007-07-30 20:01:59.000000000 +0200
@@ -70,14 +70,14 @@
 		id++;
 	}
 
-	while (id < limit) {
+	while (id <= limit) {
 		if ((cr = session->route_by_remote_id (id)) != 0) {
 			break;
 		}
 		id++;
 	}
 
-	if (id == limit) {
+	if (id >= limit) {
 		id = 0;
 		while (id != initial_id) {
 			if ((cr = session->route_by_remote_id (id)) != 0) {
@@ -93,9 +93,9 @@
 void
 ControlProtocol::prev_track (uint32_t initial_id)
 {
-	uint32_t limit = session->nroutes() - 1;
+	uint32_t limit = session->nroutes();
 	boost::shared_ptr<Route> cr = route_table[0];
-	uint32_t id;
+	int32_t id;
 
 	if (cr) {
 		id = cr->remote_control_id ();
@@ -104,7 +104,7 @@
 	}
 
 	if (id == 0) {
-		id = session->nroutes() - 1;
+		id = limit;
 	} else {
 		id--;
 	}

giso

2007-07-30 18:16

reporter   ~0004203

The attached patch resolves both problems described above. Please check if this introduces new problems...

nettings

2008-12-01 12:32

manager   ~0005408

this patch works fine for me (applied to r4269 without fuzz or massaging). please review and commit. thx, jörn

seablade

2008-12-03 04:17

manager   ~0005424

Assigned to Paul to review the patch.

   Seablade

paul

2008-12-05 08:21

administrator   ~0005492

committed to svn, and will be 2.7.1 release.

system

2020-04-19 20:12

developer   ~0021542

Issue has been closed automatically, by Trigger Close Plugin.
Feel free to re-open with additional information if you think the issue is not resolved.

Issue History

Date Modified Username Field Change
2007-07-28 15:13 giso New Issue
2007-07-30 07:17 timbyr Severity block => major
2007-07-30 07:17 timbyr Additional Information Updated
2007-07-30 18:13 giso File Added: bug1797_deadlock_and_trackselection.diff
2007-07-30 18:16 giso Note Added: 0004203
2008-12-01 12:32 nettings Note Added: 0005408
2008-12-03 04:16 seablade Status new => assigned
2008-12-03 04:16 seablade Assigned To => paul
2008-12-03 04:17 seablade Note Added: 0005424
2008-12-05 08:21 paul cost => 0.00
2008-12-05 08:21 paul Status assigned => resolved
2008-12-05 08:21 paul Resolution open => fixed
2008-12-05 08:21 paul Note Added: 0005492
2020-04-19 20:12 system Note Added: 0021542
2020-04-19 20:12 system Status resolved => closed