From 2ce57b1a220eba30be093b94d9cbb0b69e52d35e Mon Sep 17 00:00:00 2001 From: Marcin Wojciechowski Date: Tue, 29 Sep 2026 15:56:46 +0200 Subject: [PATCH 1/3] temporary not final solution --- media/client/main/source/SharedMemoryHandle.cpp | 2 ++ media/server/main/source/SharedMemoryBuffer.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/media/client/main/source/SharedMemoryHandle.cpp b/media/client/main/source/SharedMemoryHandle.cpp index e0017c5f0..bae67c388 100644 --- a/media/client/main/source/SharedMemoryHandle.cpp +++ b/media/client/main/source/SharedMemoryHandle.cpp @@ -53,6 +53,8 @@ SharedMemoryHandle::~SharedMemoryHandle() return; } + // maybe not needed + madvise(m_shmBuffer, m_shmBufferLen, MADV_DONTNEED); int32_t ret = munmap(m_shmBuffer, m_shmBufferLen); if (-1 == ret) { diff --git a/media/server/main/source/SharedMemoryBuffer.cpp b/media/server/main/source/SharedMemoryBuffer.cpp index 93983796c..75a5fa2f9 100644 --- a/media/server/main/source/SharedMemoryBuffer.cpp +++ b/media/server/main/source/SharedMemoryBuffer.cpp @@ -226,6 +226,7 @@ bool SharedMemoryBuffer::unmapPartition(MediaPlaybackType playbackType, int id) RIALTO_SERVER_LOG_WARN("Failed to unmap Shm partition for id: %d. - partition could not be found", id); return false; } + madvise(m_dataBuffer, m_dataBufferLen, MADV_DONTNEED); partition->id = kNoIdAssigned; return true; } From 2c630a08da9d0851d10b6937df5fa87bd8f6841e Mon Sep 17 00:00:00 2001 From: Marcin Wojciechowski Date: Wed, 30 Sep 2026 11:04:59 +0200 Subject: [PATCH 2/3] Revert "temporary not final solution" This reverts commit 2ce57b1a220eba30be093b94d9cbb0b69e52d35e. --- media/client/main/source/SharedMemoryHandle.cpp | 2 -- media/server/main/source/SharedMemoryBuffer.cpp | 1 - 2 files changed, 3 deletions(-) diff --git a/media/client/main/source/SharedMemoryHandle.cpp b/media/client/main/source/SharedMemoryHandle.cpp index bae67c388..e0017c5f0 100644 --- a/media/client/main/source/SharedMemoryHandle.cpp +++ b/media/client/main/source/SharedMemoryHandle.cpp @@ -53,8 +53,6 @@ SharedMemoryHandle::~SharedMemoryHandle() return; } - // maybe not needed - madvise(m_shmBuffer, m_shmBufferLen, MADV_DONTNEED); int32_t ret = munmap(m_shmBuffer, m_shmBufferLen); if (-1 == ret) { diff --git a/media/server/main/source/SharedMemoryBuffer.cpp b/media/server/main/source/SharedMemoryBuffer.cpp index 75a5fa2f9..93983796c 100644 --- a/media/server/main/source/SharedMemoryBuffer.cpp +++ b/media/server/main/source/SharedMemoryBuffer.cpp @@ -226,7 +226,6 @@ bool SharedMemoryBuffer::unmapPartition(MediaPlaybackType playbackType, int id) RIALTO_SERVER_LOG_WARN("Failed to unmap Shm partition for id: %d. - partition could not be found", id); return false; } - madvise(m_dataBuffer, m_dataBufferLen, MADV_DONTNEED); partition->id = kNoIdAssigned; return true; } From 1f4980422ccf8a720455f7019f0fa45a9eab2a5b Mon Sep 17 00:00:00 2001 From: Marcin Wojciechowski Date: Wed, 30 Sep 2026 11:29:54 +0200 Subject: [PATCH 3/3] final solution --- media/server/main/source/SharedMemoryBuffer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/media/server/main/source/SharedMemoryBuffer.cpp b/media/server/main/source/SharedMemoryBuffer.cpp index 93983796c..ee67d11ab 100644 --- a/media/server/main/source/SharedMemoryBuffer.cpp +++ b/media/server/main/source/SharedMemoryBuffer.cpp @@ -226,6 +226,13 @@ bool SharedMemoryBuffer::unmapPartition(MediaPlaybackType playbackType, int id) RIALTO_SERVER_LOG_WARN("Failed to unmap Shm partition for id: %d. - partition could not be found", id); return false; } + std::uint8_t *partitionDataPtr = nullptr; + if (getDataPtrForPartition(playbackType, id, &partitionDataPtr)) + { + const std::uint32_t kLength{partition->dataBufferVideoLen + partition->dataBufferAudioLen + + partition->dataBufferSubtitleLen}; + madvise(partitionDataPtr, kLength, MADV_DONTNEED); + } partition->id = kNoIdAssigned; return true; }