mongoc_init() 和 mongoc_cleanup() 可能会使内存"still reachable"



我有一个类要使用mongodb-c驱动程序执行mongodb操作。在构造函数中,将调用mongoc_init()。在解构主义者中,mongoc_cleanup()被调用。然后,valgrind 3.10.1告诉我,一些记忆"仍然可以到达"。valgrind的部分输出如下:

==23222==在586 的丢失记录586中,1个块中的16384个字节仍然是可到达的

===23222===在0x4C2D199:realloc(vg_replace_malloc.c:692)

===23222===通过0x6243894:CRYPTO_realloc(在/lib/x86_64-linux-gnu/libcrypto.so.1.0.0中)

===23222===通过0x62BE1F1:lh_insert(在/lib/x86_64-linux-gnu/libcrypto.so.1.0.0中)

===23222===通过0x62C0828:???(在/lib/x86_64-linux-gnu/libcrypto.so.1.0.0中)

===23222===由0x62C0243:???(在/lib/x86_64-linux-gnu/libcrypto.so.1.0.0中)

===23222===通过0x5FCB01D:ERR_load_SSL_strings(在/lib/x86_64-linux-gnu/libssl.so.1.0.0中)

===23222===通过0x5083623:_mongoc_ssl_init(在/usr/local/lib/libmongoc-1.0.so.0.0.0中)

===23222===通过0x5077028:_mongoc_do_init(在/usr/local/lib/libmongoc-1.0.so.0.0.0中)

===23222===通过0x529A3F:phread_once(pthread_once.S:104)

===23222===通过0x400F305:call_init.part.0(dl init.c:85)

===23222===通过0x400F3DE:call_init(dl-init.c:52)

===23222===通过0x400F3DE:_dl_init(dl-init.c:134)

===23222===通过0x40016E9:???(在/lib/x86_64-linux-gnu/ld-2.15.so中)

===23222===泄漏摘要:

===23222===仍然可访问:3075块中有91832个字节

当我评论这两个函数mongoc_init()和mongoc_cleanup()时,valgrind告诉我所有堆块都被释放了。

知道吗?

谢谢。

这似乎是mongodb-c驱动程序的问题。其他人在mongodb c驱动程序项目中报告了同样的问题。https://jira.mongodb.org/browse/CDRIVER-478

最新更新