summaryrefslogblamecommitdiff
path: root/user/gstreamer/test-deadlock.patch
blob: b506ca19f8c6b4a8c07c23aca453eef25eb895ed (plain) (tree)











































































































































                                                                                
From f24595e9d7952e1e957c0973de62e6c3df031c08 Mon Sep 17 00:00:00 2001
From: Jose Quaresma <quaresma.jose@gmail.com>
Date: Sun, 20 Feb 2022 23:26:10 +0000
Subject: [PATCH 1/3] gstreamer: tests: make the gstbin pop message more clear

Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
---
 tests/check/gst/gstbin.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
index e366d5fe20f..06be4c75fbb 100644
--- a/tests/check/gst/gstbin.c
+++ b/tests/check/gst/gstbin.c
@@ -38,7 +38,7 @@ pop_async_done (GstBus * bus)
       == GST_MESSAGE_ASYNC_DONE, "did not get GST_MESSAGE_ASYNC_DONE");
 
   gst_message_unref (message);
-  GST_DEBUG ("popped message");
+  GST_DEBUG ("popped async-done message");
 }
 
 static void
@@ -46,14 +46,14 @@ pop_latency (GstBus * bus)
 {
   GstMessage *message;
 
-  GST_DEBUG ("popping async-done message");
+  GST_DEBUG ("popping latency message");
   message = gst_bus_poll (bus, GST_MESSAGE_LATENCY, -1);
 
   fail_unless (message && GST_MESSAGE_TYPE (message)
       == GST_MESSAGE_LATENCY, "did not get GST_MESSAGE_LATENCY");
 
   gst_message_unref (message);
-  GST_DEBUG ("popped message");
+  GST_DEBUG ("popped latency message");
 }
 
 static void
@@ -63,7 +63,7 @@ pop_state_changed (GstBus * bus, int count)
 
   int i;
 
-  GST_DEBUG ("popping %d messages", count);
+  GST_DEBUG ("popping %d state-changed message", count);
   for (i = 0; i < count; ++i) {
     message = gst_bus_poll (bus, GST_MESSAGE_STATE_CHANGED, -1);
 
@@ -72,7 +72,7 @@ pop_state_changed (GstBus * bus, int count)
 
     gst_message_unref (message);
   }
-  GST_DEBUG ("popped %d messages", count);
+  GST_DEBUG ("popped %d state-changed messages", count);
 }
 
 static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
-- 
GitLab


From 2c47f61c69702572bf666ad9ecaf59710f4a342c Mon Sep 17 00:00:00 2001
From: Jose Quaresma <quaresma.jose@gmail.com>
Date: Sun, 20 Feb 2022 23:28:00 +0000
Subject: [PATCH 2/3] gstreamer: tests: add a timeout in gstbin pop functions
 instaed of wait forever

Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
---
 tests/check/gst/gstbin.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
index 06be4c75fbb..c837d0e7e8a 100644
--- a/tests/check/gst/gstbin.c
+++ b/tests/check/gst/gstbin.c
@@ -32,7 +32,7 @@ pop_async_done (GstBus * bus)
   GstMessage *message;
 
   GST_DEBUG ("popping async-done message");
-  message = gst_bus_poll (bus, GST_MESSAGE_ASYNC_DONE, -1);
+  message = gst_bus_poll (bus, GST_MESSAGE_ASYNC_DONE, GST_SECOND);
 
   fail_unless (message && GST_MESSAGE_TYPE (message)
       == GST_MESSAGE_ASYNC_DONE, "did not get GST_MESSAGE_ASYNC_DONE");
@@ -47,7 +47,7 @@ pop_latency (GstBus * bus)
   GstMessage *message;
 
   GST_DEBUG ("popping latency message");
-  message = gst_bus_poll (bus, GST_MESSAGE_LATENCY, -1);
+  message = gst_bus_poll (bus, GST_MESSAGE_LATENCY, GST_SECOND);
 
   fail_unless (message && GST_MESSAGE_TYPE (message)
       == GST_MESSAGE_LATENCY, "did not get GST_MESSAGE_LATENCY");
@@ -65,7 +65,7 @@ pop_state_changed (GstBus * bus, int count)
 
   GST_DEBUG ("popping %d state-changed message", count);
   for (i = 0; i < count; ++i) {
-    message = gst_bus_poll (bus, GST_MESSAGE_STATE_CHANGED, -1);
+    message = gst_bus_poll (bus, GST_MESSAGE_STATE_CHANGED, GST_SECOND);
 
     fail_unless (message && GST_MESSAGE_TYPE (message)
         == GST_MESSAGE_STATE_CHANGED, "did not get GST_MESSAGE_STATE_CHANGED");
-- 
GitLab


From 686add28e21ae0031f9e3b07f9fb5cd4d5d19bc5 Mon Sep 17 00:00:00 2001
From: Jose Quaresma <quaresma.jose@gmail.com>
Date: Mon, 21 Feb 2022 23:06:07 +0000
Subject: [PATCH 3/3] gstreamer: tests: fix gstbin deadlock

this is a bit ugly but if the latency message is lost
the pop_latency will hang forever.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/778

Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
---
 tests/check/gst/gstbin.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
index c837d0e7e8a..5d9a09171aa 100644
--- a/tests/check/gst/gstbin.c
+++ b/tests/check/gst/gstbin.c
@@ -741,7 +741,8 @@ GST_START_TEST (test_watch_for_state_change)
   pop_state_changed (bus, 3);
   if (ret == GST_STATE_CHANGE_ASYNC) {
     pop_async_done (bus);
-    pop_latency (bus);
+    if (gst_bus_have_pending (bus))
+      pop_latency (bus);
   }
 
   fail_unless (gst_bus_have_pending (bus) == FALSE,
-- 
GitLab