Hello
[In the preface I want to say that it can be valgrind's false positive].
I'm building a C++ class that uses libuv (1.13.0) and libcurl (7.54.1) for 
non-blocking file downloading. UV loop is being initialized in object's 
constructor, deinitialized in destructor and it's being kept a class member.
When it's a pointer type class member (uv_loop_t *), initialized via malloc:
loop = (uv_loop_t *) malloc(sizeof(uv_loop_t));
if (loop == NULL) {
throw std::bad_alloc();
}
uv_loop_init(loop);
and deinitialized via uv_loop_close(loop) there's no memory leak.

But when it's a struct type class member (uv_loop_t) it's initialized 
automatically  while object construction, then in constructor I call 
uv_loop_init(&loop) and uv_loop_close(&loop) in destructor, valgrind 
reports a memory leak:
==2337== 256 bytes in 1 blocks are definitely lost in loss record 790 of 
840 
==2337==    at 0x4C2FC47: realloc (vg_replace_malloc.c:785) 
==2337==    by 0x816560: maybe_resize (core.c:808) 
==2337==    by 0x816560: uv__io_start (core.c:847) 
==2337==    by 0x8181EB: uv_poll_start (poll.c:120) 
==2337==    by 0x417ECE: 
imageresizer::engine::FileDownloader::handle_socket(void*, int, int, void*) 
(FileDownloader.cpp:298) 
==2337==    by 0x417E28: 
imageresizer::engine::FileDownloader::handle_socket_cb(void*, int, int, 
void*, void*) (FileDownloader.cpp:277) 
==2337==    by 0x7D1798: singlesocket (in 
/opt/WP/imageresizer-worker/dist/Debug/GNU-Linux/imageresizer-worker) 
==2337==    by 0x7D4AD9: multi_socket (in 
/opt/WP/imageresizer-worker/dist/Debug/GNU-Linux/imageresizer-worker) 
==2337==    by 0x7D4C86: curl_multi_socket_action (in 
/opt/WP/imageresizer-worker/dist/Debug/GNU-Linux/imageresizer-worker) 
==2337==    by 0x417D59: 
imageresizer::engine::FileDownloader::on_timeout(uv_timer_s*) 
(FileDownloader.cpp:248) 
==2337==    by 0x417D25: 
imageresizer::engine::FileDownloader::on_timeout_cb(uv_timer_s*) 
(FileDownloader.cpp:242) 
==2337==    by 0x81D4B4: uv__run_timers (timer.c:165) 
==2337==    by 0x8159AB: uv_run (core.c:353)

Can you help me with getting rid of that memory leak?

--
regards
Przemysław Sobala

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to