summaryrefslogtreecommitdiffstats
path: root/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2020-09-08 13:23:42 -0400
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2021-02-05 14:56:52 +0000
commit8bf3c50ab7eb48f8db63ea41d6a12e32f3633dee (patch)
treeacf5541f19ca2a40ef1361e0757485d91e0b05c6 /meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch
parentd369fae7ef2e0bcbd934c838145b08a443b414ff (diff)
Changes: - Mask out the duplicate libopus recipe, the same version is available from a recipe in meta-oe. - Update BBFILES addition for the audio module in the feature template to work with yet another new audio output backend. - Update the AlexaAutoCoreEngineConfig.json.in template based on the new sample JSON in 2.3. - Update alexa-voiceagent-config recipe to add new configuration variables ALEXA_LOCALE, ALEXA_TIMEZONE, ALEXA_MFG_NAME, and ALEXA_DESCRIPTION to match requirements of the updated configuration JSON. - Remove local alexa-voiceagent-service patches merged by Amazon, and update 0001-remove-library-dependency-copying.patch for 2.3. - Update SDK module DEPENDS for alexa-voiceagent-service recipe to match what seems required now with 2.3. - Remove avs-device-sdk patch for building with g++ 9.x, as it is no longer required. - Add avs-device-sdk patch to workaround hang seen on first connection. - Add bbappends for aac-module-car-control and aac-module-messaging recipes to fix their nlohmann-json DEPENDS to work with the recipe that is available in meta-oe. - Rework aac-module-system-audio.bbappend to enable the PipeWire support that has been merged into the module. Bug-AGL: SPEC-3783 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I18c910f9cbf874fef85d1d84508f6666d53629ed (cherry picked from commit e0d5ad833e89f47c88601e15158015319e568af8)
Diffstat (limited to 'meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch')
-rw-r--r--meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch b/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch
new file mode 100644
index 00000000..3bf79835
--- /dev/null
+++ b/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-connection-deadlock-workaround.patch
@@ -0,0 +1,35 @@
+Workaround for connection deadlock
+
+Change the maximum (effectively infinite) delay in HTTP2Transport's
+connecting state handling code to use the inactivity timeout value,
+which is currently 5 minutes. This seems to avoid triggering a
+deadlock between the condition variable checking in the
+monitorSharedQueueWhileWaiting method and use of the object's m_mutex
+member in sendPostConnectMessage and onActivity methods.
+At present, my theory is this issue stems from some change or bug
+in the newer g++/libstdc++ coming with dunfell versus the thud release
+that Amazon supports.
+
+Upstream-Status: Inappropriate [other]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+diff --git a/ACL/src/Transport/HTTP2Transport.cpp b/ACL/src/Transport/HTTP2Transport.cpp
+index f1b5c03..dec7424 100644
+--- a/ACL/src/Transport/HTTP2Transport.cpp
++++ b/ACL/src/Transport/HTTP2Transport.cpp
+@@ -618,7 +618,13 @@ HTTP2Transport::State HTTP2Transport::handleConnecting() {
+ return m_state;
+ }
+
+- return monitorSharedQueueWhileWaiting(State::CONNECTING);
++ // Wait for connection for the same length of time as the post-connection
++ // inactivity monitor timeout (currently 5 minutes).
++ // This seems to avoid triggering an issue where connecting deadlocks when
++ // using the maximum timeout of std::chrono:steady_clock.
++ std::chrono::time_point<std::chrono::steady_clock> timeout =
++ std::chrono::steady_clock::now() + INACTIVITY_TIMEOUT;
++ return monitorSharedQueueWhileWaiting(State::CONNECTING, timeout);
+ }
+
+ HTTP2Transport::State HTTP2Transport::handleWaitingToRetryConnecting() {