From a3ca4b7a10e20954ae8f807a992a86d5e62717ba Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 12:45:38 +0530 Subject: [PATCH 01/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- SocUtils.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/SocUtils.cpp b/SocUtils.cpp index e6967a80..865245db 100644 --- a/SocUtils.cpp +++ b/SocUtils.cpp @@ -27,7 +27,12 @@ namespace SocUtils { - static std::shared_ptr socInterface = SocInterface::CreateSocInterface(); + static std::shared_ptr socInterface; + + void Init() + { + socInterface = SocInterface::CreateSocInterface(); + } /** * @brief Checks if AppSrc should be used for progressive playback. * From 71d2cf99d970c241af231299a0b6495f4a7622aa Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 12:48:11 +0530 Subject: [PATCH 02/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- SocUtils.h | 1 + 1 file changed, 1 insertion(+) diff --git a/SocUtils.h b/SocUtils.h index 892eb3d4..bc1456e6 100644 --- a/SocUtils.h +++ b/SocUtils.h @@ -26,6 +26,7 @@ namespace SocUtils { + void Init(); /** * @brief Checks if AppSrc should be used for progressive playback. * From aaf6471f95d3a4e838ab69c6bb3ee180749e4925 Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 12:48:59 +0530 Subject: [PATCH 03/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- GstUtils.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/GstUtils.cpp b/GstUtils.cpp index 38283377..2e0c2104 100644 --- a/GstUtils.cpp +++ b/GstUtils.cpp @@ -148,6 +148,7 @@ GstBuffer* CreateGstBufferWithData(gconstpointer data, gsize size) void PlayerCliGstInit(int *argc, char ***argv) { gst_init(argc,argv); + SocUtils::Init(); } /** From 106e054e0fd2d29db5b7bbab5879bb8a75711535 Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 15:03:05 +0530 Subject: [PATCH 04/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- InterfacePlayerRDK.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InterfacePlayerRDK.cpp b/InterfacePlayerRDK.cpp index dc5e6690..d937a772 100644 --- a/InterfacePlayerRDK.cpp +++ b/InterfacePlayerRDK.cpp @@ -5138,7 +5138,7 @@ void InterfacePlayerRDK::InitializePlayerGstreamerPlugins() if (!gst_init_check(nullptr, nullptr, nullptr)) { MW_LOG_ERR("gst_init_check() failed"); } - + SocUtils::Init(); #define PLUGINS_TO_LOWER_RANK_MAX 2 static const char *plugins_to_lower_rank[PLUGINS_TO_LOWER_RANK_MAX] = { "aacparse", From e758b8c3275b0719bc44fdb3d45510bc651edcae Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 15:04:44 +0530 Subject: [PATCH 05/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- SocUtils.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SocUtils.cpp b/SocUtils.cpp index 865245db..1fa0241f 100644 --- a/SocUtils.cpp +++ b/SocUtils.cpp @@ -28,10 +28,12 @@ namespace SocUtils { static std::shared_ptr socInterface; - void Init() { - socInterface = SocInterface::CreateSocInterface(); + if (!socInterface) + { + socInterface = SocInterface::CreateSocInterface(); + } } /** * @brief Checks if AppSrc should be used for progressive playback. From 70ed04212dc66762644ebdfde9498ea6797321de Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 15:05:40 +0530 Subject: [PATCH 06/10] Potential fix Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- SocUtils.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SocUtils.h b/SocUtils.h index bc1456e6..98c95afe 100644 --- a/SocUtils.h +++ b/SocUtils.h @@ -26,6 +26,13 @@ namespace SocUtils { + /** + * @brief Initializes access to SOC-specific runtime capabilities. + * + * This function must be called before any other SocUtils accessor is used. + * It performs the required initialization for querying vendor/SOC + * capabilities at runtime. + */ void Init(); /** * @brief Checks if AppSrc should be used for progressive playback. From 1f3d64b30391e45b351c31b74ddbfb0f60ee5af4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 13 May 2026 09:51:32 +0000 Subject: [PATCH 07/10] Fix SocUtils lazy init usage and missing include Agent-Logs-Url: https://github.com/rdkcentral/middleware-player-interface/sessions/1f763da8-2d42-4ed4-b6a4-377a3c6635d5 Co-authored-by: ALSAMEEMA <55386564+ALSAMEEMA@users.noreply.github.com> --- GstUtils.cpp | 2 +- SocUtils.cpp | 29 ++++++++++++++++++----------- SocUtils.h | 5 ++--- test/utests/fakes/FakeSocUtils.cpp | 4 ++++ 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/GstUtils.cpp b/GstUtils.cpp index 2e0c2104..072c6d31 100644 --- a/GstUtils.cpp +++ b/GstUtils.cpp @@ -20,6 +20,7 @@ #include "GstUtils.h" #include #include "PlayerUtils.h" +#include "SocUtils.h" /** * @brief Get the GStreamer Caps based on the provided format and platform. @@ -158,4 +159,3 @@ void PlayerCliGstTerm() { gst_deinit(); } - diff --git a/SocUtils.cpp b/SocUtils.cpp index 1fa0241f..b3e4abae 100644 --- a/SocUtils.cpp +++ b/SocUtils.cpp @@ -28,12 +28,19 @@ namespace SocUtils { static std::shared_ptr socInterface; + + static std::shared_ptr GetSocInterface() + { + if (!socInterface) + { + socInterface = SocInterface::CreateSocInterface(); + } + return socInterface; + } + void Init() { - if (!socInterface) - { - socInterface = SocInterface::CreateSocInterface(); - } + (void)GetSocInterface(); } /** * @brief Checks if AppSrc should be used for progressive playback. @@ -45,7 +52,7 @@ namespace SocUtils */ bool UseAppSrcForProgressivePlayback( void ) { - return socInterface->UseAppSrc(); + return GetSocInterface()->UseAppSrc(); } /** @@ -58,7 +65,7 @@ namespace SocUtils */ bool UseWesterosSink( void ) { - return socInterface->UseWesterosSink(); + return GetSocInterface()->UseWesterosSink(); } /** @@ -70,7 +77,7 @@ namespace SocUtils */ bool IsAudioFragmentSyncSupported( void ) { - return socInterface->IsAudioFragmentSyncSupported(); + return GetSocInterface()->IsAudioFragmentSyncSupported(); } /** @@ -83,7 +90,7 @@ namespace SocUtils */ bool EnableLiveLatencyCorrection( void ) { - return socInterface->EnableLiveLatencyCorrection(); + return GetSocInterface()->EnableLiveLatencyCorrection(); } /** @@ -96,7 +103,7 @@ namespace SocUtils */ int RequiredQueuedFrames( void ) { - return socInterface->RequiredQueuedFrames(); + return GetSocInterface()->RequiredQueuedFrames(); } /** @@ -109,7 +116,7 @@ namespace SocUtils */ bool EnablePTSRestamp(void) { - return socInterface->EnablePTSRestamp(); + return GetSocInterface()->EnablePTSRestamp(); } /** * @brief Resets segment event flags during trickplay transitions. @@ -118,7 +125,7 @@ namespace SocUtils */ bool ResetNewSegmentEvent() { - return socInterface->ResetNewSegmentEvent(); + return GetSocInterface()->ResetNewSegmentEvent(); } /** * @brief Check if GST Subtec is enabled diff --git a/SocUtils.h b/SocUtils.h index 98c95afe..ad304b17 100644 --- a/SocUtils.h +++ b/SocUtils.h @@ -29,9 +29,8 @@ namespace SocUtils /** * @brief Initializes access to SOC-specific runtime capabilities. * - * This function must be called before any other SocUtils accessor is used. - * It performs the required initialization for querying vendor/SOC - * capabilities at runtime. + * This function can be used to perform eager initialization during startup. + * SocUtils accessors also perform lazy initialization when needed. */ void Init(); /** diff --git a/test/utests/fakes/FakeSocUtils.cpp b/test/utests/fakes/FakeSocUtils.cpp index daf88972..afc302ee 100644 --- a/test/utests/fakes/FakeSocUtils.cpp +++ b/test/utests/fakes/FakeSocUtils.cpp @@ -21,6 +21,10 @@ namespace SocUtils { + void Init() + { + } + void InitializePlatformConfigs() { } From 6b104ed9a16bca82d240e4fec6dc191c2fdb1bed Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 15:45:35 +0530 Subject: [PATCH 08/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- GstUtils.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/GstUtils.cpp b/GstUtils.cpp index 072c6d31..19f753fc 100644 --- a/GstUtils.cpp +++ b/GstUtils.cpp @@ -149,7 +149,6 @@ GstBuffer* CreateGstBufferWithData(gconstpointer data, gsize size) void PlayerCliGstInit(int *argc, char ***argv) { gst_init(argc,argv); - SocUtils::Init(); } /** From 43c404fea45bb2977ea8cb93db00d4c1d88f1c1a Mon Sep 17 00:00:00 2001 From: Alsameema Date: Wed, 13 May 2026 15:46:27 +0530 Subject: [PATCH 09/10] DELIA-70340: [Rack][CELLO][CDL Test] : WPEWebProcess crash with signature "plugin_loader_cleanup_child" with different fingerprints during bootup in CDL/Reboot test --- GstUtils.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/GstUtils.cpp b/GstUtils.cpp index 19f753fc..366b6bc4 100644 --- a/GstUtils.cpp +++ b/GstUtils.cpp @@ -20,7 +20,6 @@ #include "GstUtils.h" #include #include "PlayerUtils.h" -#include "SocUtils.h" /** * @brief Get the GStreamer Caps based on the provided format and platform. From 1359b3dbb7c0efe69d9845bac3695a65cc622122 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 13:23:34 +0000 Subject: [PATCH 10/10] Add thread safety to SocUtils using C++11 magic static and fix Init() indentation Agent-Logs-Url: https://github.com/rdkcentral/middleware-player-interface/sessions/e537b13f-3d9c-45ec-ae17-03be48d52232 Co-authored-by: ALSAMEEMA <55386564+ALSAMEEMA@users.noreply.github.com> --- SocUtils.cpp | 7 +------ SocUtils.h | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/SocUtils.cpp b/SocUtils.cpp index b3e4abae..5449cb86 100644 --- a/SocUtils.cpp +++ b/SocUtils.cpp @@ -27,14 +27,9 @@ namespace SocUtils { - static std::shared_ptr socInterface; - static std::shared_ptr GetSocInterface() { - if (!socInterface) - { - socInterface = SocInterface::CreateSocInterface(); - } + static std::shared_ptr socInterface = SocInterface::CreateSocInterface(); return socInterface; } diff --git a/SocUtils.h b/SocUtils.h index ad304b17..d1aed318 100644 --- a/SocUtils.h +++ b/SocUtils.h @@ -32,7 +32,7 @@ namespace SocUtils * This function can be used to perform eager initialization during startup. * SocUtils accessors also perform lazy initialization when needed. */ - void Init(); + void Init(); /** * @brief Checks if AppSrc should be used for progressive playback. *