View Issue Details

IDProjectCategoryView StatusLast Update
0003485ardourbugspublic2020-04-19 20:14
Reporterdanboid Assigned Tocth103  
PrioritynormalSeveritycrashReproducibilitysometimes
Status closedResolutionfixed 
Target Version3.0-beta1 
Summary0003485: A3 frequently refuses to start if started before jack
DescriptionIf you start A3 before jack (ie you want to start jack with the audio setup wizard) it frequently fails with the error:

ardour: [ERROR]: AudioSetup value for interface is missing data
Segmentation fault

I'm pretty certain this arises after I've previously started jack (using the FFADO driver) with the A3 audio setup wizard and then I try running A3 (before jack) like this without being plugged into my FFADO device ie I want to use ALSA instead and A3 wants to use FFADO.

The current 'fix' is to remove ~/.config/ardour3 and try again. Present under 7869
TagsNo tags attached.

Activities

2010-10-25 22:37

 

engine-dialog-missing-data-fix.patch (4,219 bytes)   
Index: gtk2_ardour/engine_dialog.cc
===================================================================
--- gtk2_ardour/engine_dialog.cc	(revision 7922)
+++ gtk2_ardour/engine_dialog.cc	(working copy)
@@ -414,6 +414,7 @@
 	bool using_alsa = false;
 	bool using_coreaudio = false;
 	bool using_dummy = false;
+	bool using_ffado = false;
 
 	/* first, path to jackd */
 
@@ -422,11 +423,14 @@
 	/* now jackd arguments */
 
 	str = timeout_combo.get_active_text ();
+	
 	if (str != _("Ignore")) {
+
 		double secs = 0;
 		uint32_t msecs;
 		secs = atof (str);
 		msecs = (uint32_t) floor (secs * 1000.0);
+		
 		if (msecs > 0) {
 			cmd.push_back ("-t");
 			cmd.push_back (to_string (msecs, std::dec));
@@ -465,6 +469,7 @@
 	cmd.push_back ("-d");
 
 	driver = driver_combo.get_active_text ();
+	
 	if (driver == X_("ALSA")) {
 		using_alsa = true;
 		cmd.push_back ("alsa");
@@ -478,6 +483,7 @@
 	} else if (driver == X_("FreeBoB")) {
 		cmd.push_back ("freebob");
 	} else if (driver == X_("FFADO")) {
+		using_ffado = true;
 		cmd.push_back ("firewire");
 	} else if ( driver == X_("Dummy")) {
 		using_dummy = true;
@@ -505,6 +511,7 @@
 
 			cmd.push_back ("-C");
 			cmd.push_back (input_device);
+			
 			cmd.push_back ("-P");
 			cmd.push_back (output_device);
 
@@ -525,7 +532,24 @@
 
 	cmd.push_back ("-p");
 	cmd.push_back (period_size_combo.get_active_text());
+	
+	if (using_alsa || using_ffado || using_coreaudio) {
 
+		double val = input_latency_adjustment.get_value();
+
+                if (val) {
+                        cmd.push_back ("-I");
+                        cmd.push_back (to_string ((uint32_t) val, std::dec));
+                }
+
+                val = output_latency_adjustment.get_value();
+                
+		if (val) {
+                        cmd.push_back ("-O");
+                        cmd.push_back (to_string ((uint32_t) val, std::dec));
+                }
+	}
+
 	if (using_alsa) {
 
 		if (audio_mode_combo.get_active_text() != _("Playback/Recording on 2 Devices")) {
@@ -574,20 +598,6 @@
 		} else if (str == _("raw")) {
 			cmd.push_back ("-X raw");
 		}
-
-                double val = input_latency_adjustment.get_value();
-
-                if (val) {
-                        cmd.push_back ("-I");
-                        cmd.push_back (to_string ((uint32_t) val, std::dec));
-                }
-
-                val = output_latency_adjustment.get_value();
-                if (val) {
-                        cmd.push_back ("-O");
-                        cmd.push_back (to_string ((uint32_t) val, std::dec));
-                }
-
 	} else if (using_coreaudio) {
 
 #ifdef __APPLE__
@@ -601,19 +611,6 @@
 
 		cmd.push_back ("-d");
 		cmd.push_back (device);
-
-                double val = input_latency_adjustment.get_value();
-
-                if (val) {
-                        cmd.push_back ("-I");
-                        cmd.push_back (to_string ((uint32_t) val, std::dec));
-                }
-
-                double val = output_latency_adjustment.get_value();
-                if (val) {
-                        cmd.push_back ("-O");
-                        cmd.push_back (to_string ((uint32_t) val, std::dec));
-                }
 #endif
 
 	}
@@ -1224,15 +1221,21 @@
 	XMLNode* child;
 	XMLProperty* prop = NULL;
 	bool using_dummy = false;
+	bool using_ffado = false;
 
 	int val;
 	string strval;
 
 	if ( (child = root.child ("driver"))){
 		prop = child->property("val");
+		
 		if (prop && (prop->value() == "Dummy") ) {
 			using_dummy = true;
 		}
+		if (prop && (prop->value() == "FFADO") ) {
+			using_ffado = true;
+		}
+
 	}
 
 	clist = root.children();
@@ -1245,9 +1248,15 @@
 
 		if (!prop || prop->value().empty()) {
 
-			if ((using_dummy && ( child->name() == "interface" || child->name() == "inputdevice" || child->name() == "outputdevice" )) ||
-				child->name() == "timeout")
+			if (((using_dummy || using_ffado) 
+				&& ( child->name() == "interface" 
+					|| child->name() == "inputdevice" 
+					|| child->name() == "outputdevice")) 
+				|| child->name() == "timeout")
+			{
 				continue;
+			}
+			
 			error << string_compose (_("AudioSetup value for %1 is missing data"), child->name()) << endmsg;
 			continue;
 		}

lincoln

2010-10-25 22:39

reporter   ~0009303

Attached patch should clear this. Patch also activate input/output latency adjustments to FFADO driver. These were being ignored and not included in the jackd command.

paul

2010-11-04 18:08

administrator   ~0009347

patch applied to svn, rev 7964. please confirm that it works.

cth103

2010-11-28 16:37

administrator   ~0009528

Any news on whether this is fixed or not?

danboid

2010-11-28 21:57

reporter   ~0009530

Hi Carl!

I'd say not as I suspect this is actually a dupe of http://tracker.ardour.org/view.php?id=3571 . I have always been starting jack with the audio setup wizard throughout my testing - here I was switching between FFADO and ALSA whereas in 3571 I was switching between different ALSA devices between sessions and something obviously goes wrong within the config files but both are giving me

ardour: [ERROR]: AudioSetup value for interface is missing data

cth103

2010-12-12 00:19

administrator   ~0009597

OK, marking this as closed as the suspected dupe is thought fixed.

system

2020-04-19 20:14

developer   ~0022242

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
2010-10-02 20:26 danboid New Issue
2010-10-18 15:39 cth103 cost => 0.00
2010-10-18 15:39 cth103 Target Version => 3.0-beta1
2010-10-25 22:37 lincoln File Added: engine-dialog-missing-data-fix.patch
2010-10-25 22:39 lincoln Note Added: 0009303
2010-11-04 18:08 paul Note Added: 0009347
2010-11-04 18:08 paul Status new => feedback
2010-11-28 16:37 cth103 Note Added: 0009528
2010-11-28 21:57 danboid Note Added: 0009530
2010-12-12 00:19 cth103 Note Added: 0009597
2010-12-12 00:19 cth103 Status feedback => resolved
2010-12-12 00:19 cth103 Resolution open => fixed
2010-12-12 00:19 cth103 Assigned To => cth103
2020-04-19 20:14 system Note Added: 0022242
2020-04-19 20:14 system Status resolved => closed