summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2022-12-05 02:25:35 +0000
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2022-12-05 02:25:35 +0000
commit9a6e4b7f4c99f1ee943fbf609527f4bb6196fc3c (patch)
tree809db63f75743dd27ac5639b0068434fc2ad660b
parent1f70373be016b80505407f5b2f2d813b6d782694 (diff)
downloadpackages-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
-rw-r--r--user/gstreamer/APKBUILD4
-rw-r--r--user/gstreamer/test-deadlock.patch140
2 files changed, 143 insertions, 1 deletions
diff --git a/user/gstreamer/APKBUILD b/user/gstreamer/APKBUILD
index 7d112894e..8aa1f8a72 100644
--- a/user/gstreamer/APKBUILD
+++ b/user/gstreamer/APKBUILD
@@ -13,6 +13,7 @@ makedepends="$depends_dev bison flex gobject-introspection-dev glib-dev
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools $pkgname-lang"
source="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$pkgver.tar.xz
disable-tests.patch
+ test-deadlock.patch
"
build() {
@@ -54,4 +55,5 @@ tools() {
}
sha512sums="d6f67cce81ba15fba3fcf70850e3c84b25e8da3e53fd56e6f2c87c7ee1701071ea44deb754a0ea371b3cb17877f26aab94d9eccb6729cbb370d6d6d5c324aa1a gstreamer-1.20.1.tar.xz
-39e6bfb52ebe85beefa2550eb404f83c5bbb3546cc1733b99e757401d2d182f95d829b90df99d5f43506d7c85d4f44ac797f35653cd42a935f1dc56d0b844c02 disable-tests.patch"
+39e6bfb52ebe85beefa2550eb404f83c5bbb3546cc1733b99e757401d2d182f95d829b90df99d5f43506d7c85d4f44ac797f35653cd42a935f1dc56d0b844c02 disable-tests.patch
+d7e574e8715607d3103d46eb05388b781702a9e937d78f8cfab6d8d48d04baa7fbfe547bdeb816bbfddb5a333dd1862e460b057b12ea24704351ef5653f78491 test-deadlock.patch"
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
+