From 10ffe19e79f8470877ace19c321c5f712fc23ebe Mon Sep 17 00:00:00 2001 From: Sergei Vinogradov Date: Tue, 21 Oct 2025 15:14:22 +0200 Subject: [PATCH] Add PutIPCHandleAfterFree IPC test --- test/ipcFixtures.hpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/ipcFixtures.hpp b/test/ipcFixtures.hpp index 1bcd18a29b..104ca3c26d 100644 --- a/test/ipcFixtures.hpp +++ b/test/ipcFixtures.hpp @@ -705,6 +705,29 @@ TEST_P(umfIpcTest, openInTwoIpcHandlers) { EXPECT_EQ(stat.closeCount, stat.openCount); } +TEST_P(umfIpcTest, PutIPCHandleAfterFree) { + constexpr size_t SIZE = 100; + umf_test::pool_unique_handle_t pool = makePool(); + ASSERT_NE(pool.get(), nullptr); + + void *ptr = umfPoolMalloc(pool.get(), SIZE); + EXPECT_NE(ptr, nullptr); + + umf_ipc_handle_t ipcHandle = nullptr; + size_t handleSize = 0; + umf_result_t ret = umfGetIPCHandle(ptr, &ipcHandle, &handleSize); + ASSERT_EQ(ret, UMF_RESULT_SUCCESS); + + ret = umfPoolFree(pool.get(), ptr); + EXPECT_EQ(ret, UMF_RESULT_SUCCESS); + + ret = umfPutIPCHandle(ipcHandle); + EXPECT_EQ(ret, UMF_RESULT_SUCCESS); + + pool.reset(nullptr); + EXPECT_EQ(stat.putCount, stat.getCount); +} + TEST_P(umfIpcTest, ConcurrentGetConcurrentPutHandles) { concurrentGetConcurrentPutHandles(false); }