Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit c565c17

Browse filesBrowse files
bnoordhuiscjihrig
authored andcommitted
test: fix memory leaks in inspector tests
The inspector tests weren't closing open libuv handles properly, making valgrind complain. Strengthen the uv_loop_close() check while here. With this commit applied: $ valgrind ./out/Release/cctest 2>&1 | grep 'total heap' | cut -c31- 1,017 allocs, 1,017 frees, 21,695,456 bytes allocated PR-URL: #7906 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent b75ca50 commit c565c17
Copy full SHA for c565c17

File tree

Expand file treeCollapse file tree

1 file changed

+12
-15
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+12
-15
lines changed
Open diff view settings
Collapse file

‎test/cctest/test_inspector_socket.cc‎

Copy file name to clipboardExpand all lines: test/cctest/test_inspector_socket.cc
+12-15Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -288,10 +288,10 @@ static bool waiting_to_close = true;
288288

289289
void handle_closed(uv_handle_t* handle) { waiting_to_close = false; }
290290

291-
static void really_close(uv_tcp_t* socket) {
291+
static void really_close(uv_handle_t* handle) {
292292
waiting_to_close = true;
293-
if (!uv_is_closing(reinterpret_cast<uv_handle_t*>(socket))) {
294-
uv_close(reinterpret_cast<uv_handle_t*>(socket), handle_closed);
293+
if (!uv_is_closing(handle)) {
294+
uv_close(handle, handle_closed);
295295
SPIN_WHILE(waiting_to_close);
296296
}
297297
}
@@ -300,6 +300,7 @@ static void really_close(uv_tcp_t* socket) {
300300
static void manual_inspector_socket_cleanup() {
301301
EXPECT_EQ(0, uv_is_active(
302302
reinterpret_cast<uv_handle_t*>(&inspector.client)));
303+
really_close(reinterpret_cast<uv_handle_t*>(&inspector.client));
303304
free(inspector.ws_state);
304305
free(inspector.http_parsing_state);
305306
free(inspector.buffer);
@@ -339,21 +340,13 @@ class InspectorSocketTest : public ::testing::Test {
339340
reinterpret_cast<const sockaddr *>(&addr), on_connection);
340341
uv_tcp_nodelay(&client_socket, 1); // The buffering messes up the test
341342
SPIN_WHILE(!connect.data || !connected);
342-
really_close(&server);
343-
uv_unref(reinterpret_cast<uv_handle_t*>(&server));
343+
really_close(reinterpret_cast<uv_handle_t*>(&server));
344344
}
345345

346346
virtual void TearDown() {
347-
really_close(&client_socket);
348-
for (int i = 0; i < MAX_LOOP_ITERATIONS; i++)
349-
uv_run(&loop, UV_RUN_NOWAIT);
347+
really_close(reinterpret_cast<uv_handle_t*>(&client_socket));
348+
really_close(reinterpret_cast<uv_handle_t*>(&timeout_timer));
350349
EXPECT_EQ(nullptr, inspector.buffer);
351-
uv_stop(&loop);
352-
int err = uv_run(&loop, UV_RUN_ONCE);
353-
if (err != 0) {
354-
uv_print_active_handles(&loop, stderr);
355-
}
356-
EXPECT_EQ(0, err);
357350
expectations* expects = static_cast<expectations*>(inspector.data);
358351
if (expects != nullptr) {
359352
GTEST_ASSERT_EQ(expects->actual_end, expects->actual_offset);
@@ -362,7 +355,11 @@ class InspectorSocketTest : public ::testing::Test {
362355
free(expects);
363356
inspector.data = nullptr;
364357
}
365-
uv_loop_close(&loop);
358+
const int err = uv_loop_close(&loop);
359+
if (err != 0) {
360+
uv_print_all_handles(&loop, stderr);
361+
}
362+
EXPECT_EQ(0, err);
366363
}
367364
};
368365

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.