Skip to content

Commit 86a399f

Browse files
authored
Merge pull request #2274 from DARMA-tasking/2273-memory-leak-in-serialized-messenger-for-local-sends
#2273: serialization: fix memory leak in local send
2 parents ae7478d + fe6f637 commit 86a399f

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/vt/serialization/messaging/serialized_messenger.impl.h

+2
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,8 @@ template <typename MsgT, typename BaseT>
423423
auto msg_data = ptr;
424424
auto user_msg = deserializeFullMessage<MsgT>(msg_data);
425425

426+
std::free(msg_data);
427+
426428
vt_debug_print(
427429
verbose, serial_msg,
428430
"serialMsgHandler: local msg: handler={}\n", typed_handler

tests/unit/serialization/test_serialize_messenger.cc

+18
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,15 @@ static void myDataMsgHan(MyDataMsg* msg) {
9898
msg->check();
9999
}
100100

101+
static void myDataHan(std::vector<int> const& vec) {
102+
int i = 0;
103+
EXPECT_EQ(vec.size(), 100ull);
104+
for (auto&& x : vec) {
105+
EXPECT_EQ(x, i);
106+
i++;
107+
}
108+
}
109+
101110
struct TestSerialMessenger : TestParallelHarness {
102111
using TestMsg = TestStaticBytesShortMsg<4>;
103112
};
@@ -115,6 +124,15 @@ TEST_F(TestSerialMessenger, test_serial_messenger_1) {
115124
}
116125
}
117126

127+
TEST_F(TestSerialMessenger, test_serial_messenger_2) {
128+
auto const& this_node = theContext()->getNode();
129+
std::vector<int> vec;
130+
for (int i = 0; i < 100; i++) {
131+
vec.push_back(i);
132+
}
133+
theMsg()->send<&myDataHan>(vt::Node(this_node), vec);
134+
}
135+
118136
TEST_F(TestSerialMessenger, test_serial_messenger_bcast_1) {
119137
auto const& my_node = theContext()->getNode();
120138

0 commit comments

Comments
 (0)