[libcamera-devel] [PATCH v2] test: gstreamer: Disable gstreamer registry forks

Vedant Paranjape vedantparanjape160201 at gmail.com
Sat Aug 21 16:41:45 CEST 2021


ASan needs to be loaded first before gstreamer is loaded. This was not
possible, so verify_asan_link_order was disabled. Better way to tackle
this issue was disabling forks on the gstreamer side.

verify_asan_link_order=0 disables the check on ASan side which checks if
ASan was loaded before any other DLLs. Since, gstreamer spawns a child
helper process while building the registry, we needed to disable this
check. But with gst_registry_fork_set_enabled() it is possible to
disable spawning this child helper process, so this ensures that ASan is
loaded before any other DLL is loaded.

Signed-off-by: Vedant Paranjape <vedantparanjape160201 at gmail.com>
---
 test/gstreamer/gstreamer_single_stream_test.cpp | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/test/gstreamer/gstreamer_single_stream_test.cpp b/test/gstreamer/gstreamer_single_stream_test.cpp
index 349dcfa4..80e652eb 100644
--- a/test/gstreamer/gstreamer_single_stream_test.cpp
+++ b/test/gstreamer/gstreamer_single_stream_test.cpp
@@ -41,18 +41,13 @@ protected:
 		 * GStreamer is most likely not, this will cause the ASan link
 		 * order check to fail when gst-plugin-scanner dlopen()s the
 		 * plugin as many libraries will have already been loaded by
-		 * then. Work around this issue by disabling the link order
-		 * check. This will only affect child processes, as ASan is
-		 * already loaded for this process by the time this code is
-		 * executed, and should thus hopefully be safe.
-		 *
-		 * This option is not available in gcc older than 8, the only
-		 * option in that case is to skip the test.
+		 * then. Work around this issue by disabling spawning of a
+		 * child helper process when rebuilding the registry. This will
+		 * only affect child processes, as ASan is already loaded for
+		 * this process by the time this code is executed, and should
+		 * thus hopefully be safe.
 		 */
-#if defined(__SANITIZE_ADDRESS__) && !defined(__clang__) && __GNUC__ < 8
-		return TestSkip;
-#endif
-		setenv("ASAN_OPTIONS", "verify_asan_link_order=0", 1);
+		gst_registry_fork_set_enabled(false);
 
 		/* Initialize GStreamer */
 		g_autoptr(GError) errInit = NULL;
-- 
2.25.1



More information about the libcamera-devel mailing list