RDKEMW-18434 : [BCM Rogers Monarch IUI V2] RialtoServer process crash observed while switching between Xumo FAST channels during CC verification#554
Conversation
|
Pull request must be merged with a description containing the required fields, Summary: If there is no jira releated to this change, please put 'Jira: NO-JIRA'. Description can be changed by editing the top comment on your pull request and making a new commit. |
There was a problem hiding this comment.
Pull request overview
This PR aims to prevent RialtoServer crashes seen during FAST channel switching by hardening MediaPipelineServerInternal against race conditions involving GstGenericPlayer teardown and late/overlapping callbacks.
Changes:
- Reset
m_gstPlayerduringMediaPipelineServerInternaldestruction. - Gate
notifyPlaybackInfo()forwarding onm_gstPlayervalidity and add a warning when skipped.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Coverage statistics of your commit: |
|
CCI-Build-Verified -1 |
|
Coverage statistics of your commit: |
15ed5e5 to
73254e2
Compare
|
Coverage statistics of your commit: |
73254e2 to
0382aee
Compare
resolve valgrind l1
0382aee to
e660c09
Compare
|
Coverage statistics of your commit: |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
Coverage statistics of your commit: |
This reverts commit 8106f0e.
| std::unique_ptr<common::ITimer> timerMock = std::make_unique<StrictMock<TimerMock>>(); | ||
| EXPECT_CALL(dynamic_cast<StrictMock<TimerMock> &>(*timerMock), isActive()).WillOnce(Return(true)); | ||
| EXPECT_CALL(dynamic_cast<StrictMock<TimerMock> &>(*timerMock), isActive()).WillOnce(Return(true)).WillRepeatedly(Return(false)); | ||
| EXPECT_CALL(*m_timerFactoryMock, createTimer(kPlaybackInfoTimerMs, _, common::TimerType::PERIODIC)) |
|
Coverage statistics of your commit: |
|
Coverage statistics of your commit: |
…ral/rialto into feature/RDKEMW-18434_dev
|
Coverage statistics of your commit: |
| { | ||
| expectShutdown(); | ||
| expectStop(); | ||
| EXPECT_CALL(*m_timerFactoryMock, createTimer(_, _, _)).Times(AnyNumber()); |
There was a problem hiding this comment.
Please apply this copilot comment. Create timer is not called during the GstGenericPlayer teardown, so this expect_call should be moved to the dedicated method, e.g. void expectPlaybackInfoTimerCreation() and void expectPlaybackInfoTimerCancel(). EXPECT_CALLs should not have any .Times(AnyNumber()); and expects should be added only for tests, that really need it.
| { | ||
| willNotifyPlaybackInfo(); | ||
| std::unique_ptr<common::ITimer> playbackInfoTimerMock = std::make_unique<StrictMock<TimerMock>>(); | ||
| EXPECT_CALL(dynamic_cast<StrictMock<TimerMock> &>(*playbackInfoTimerMock), isActive()).WillRepeatedly(Return(false)); |
There was a problem hiding this comment.
Please apply the copilot comment.
isActive should return true and cancelling timer in the destructor should be covered
| { | ||
| willNotifyPlaybackInfoWithAudioFade(); | ||
| std::unique_ptr<common::ITimer> playbackInfoTimerMock = std::make_unique<StrictMock<TimerMock>>(); | ||
| EXPECT_CALL(dynamic_cast<StrictMock<TimerMock> &>(*playbackInfoTimerMock), isActive()).WillRepeatedly(Return(false)); |
There was a problem hiding this comment.
Please apply the copilot comment.
isActive should return true and cancelling timer in the destructor should be covered
| { | ||
| willNotifyPlaybackInfo(); | ||
| std::unique_ptr<common::ITimer> playbackInfoTimerMock = std::make_unique<StrictMock<TimerMock>>(); | ||
| EXPECT_CALL(dynamic_cast<StrictMock<TimerMock> &>(*playbackInfoTimerMock), isActive()).WillRepeatedly(Return(false)); |
| EXPECT_CALL(dynamic_cast<StrictMock<TimerMock> &>(*timerMock), isActive()) | ||
| .WillOnce(Return(true)) | ||
| .WillRepeatedly(Return(false)); |
| { | ||
| expectShutdown(); | ||
| expectStop(); | ||
| EXPECT_CALL(*m_timerFactoryMock, createTimer(_, _, _)).Times(AnyNumber()); |
|
Coverage statistics of your commit: |
Summary: handling race conditions for GstPlayer
Type: Fix
Test Plan: UT/CT, Fullstac
Jira: RDKEMW-18434