diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2022-12-05 02:25:35 +0000 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2022-12-05 02:25:35 +0000 |
commit | 9a6e4b7f4c99f1ee943fbf609527f4bb6196fc3c (patch) | |
tree | 809db63f75743dd27ac5639b0068434fc2ad660b /user/gstreamer/test-deadlock.patch | |
parent | 1f70373be016b80505407f5b2f2d813b6d782694 (diff) | |
download | packages-9a6e4b7f4c99f1ee943fbf609527f4bb6196fc3c.tar.gz packages-9a6e4b7f4c99f1ee943fbf609527f4bb6196fc3c.tar.bz2 packages-9a6e4b7f4c99f1ee943fbf609527f4bb6196fc3c.tar.xz packages-9a6e4b7f4c99f1ee943fbf609527f4bb6196fc3c.zip |
user/gstreamer: Fix deadlock in gst_gstbin test
This is pending merge upstream and fixes the deadlock in the gst_gstbin
test which causes it to timeout on builders sometimes.
Ref: #807, #853
Diffstat (limited to 'user/gstreamer/test-deadlock.patch')
-rw-r--r-- | user/gstreamer/test-deadlock.patch | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/user/gstreamer/test-deadlock.patch b/user/gstreamer/test-deadlock.patch new file mode 100644 index 000000000..b506ca19f --- /dev/null +++ b/user/gstreamer/test-deadlock.patch @@ -0,0 +1,140 @@ +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 + |