1

mongodb-c-driver を使用して mongodb 操作を行うクラスがあります。コンストラクターでは、mongoc_init() が呼び出されます。デコンストラクタでは、mongoc_cleanup() が呼び出されます。次に、valgrind 3.10.1 から、一部のメモリが「まだ到達可能」であることがわかりました。valgrind 出力の一部は次のとおりです。

==23222== 1 ブロックの 16,384 バイトは、586 の損失レコード 586 でまだ到達可能です

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

==23222== by 0x6243894: CRYPTO_realloc (/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 内)

==23222== by 0x62BE1F1: lh_insert (/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 内)

==23222== by 0x62C0828: ??? (/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 内)

==23222== by 0x62C0243: ??? (/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 内)

==23222== by 0x5FCB01D: ERR_load_SSL_strings (/lib/x86_64-linux-gnu/libssl.so.1.0.0 内)

==23222== by 0x5083623: _mongoc_ssl_init (/usr/local/lib/libmongoc-1.0.so.0.0.0 内)

==23222== by 0x5077028: _mongoc_do_init (/usr/local/lib/libmongoc-1.0.so.0.0.0 内)

==23222== by 0x529A3FF: pthread_once (pthread_once.S:104)

==23222== by 0x400F305: call_init.part.0 (dl-init.c:85)

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

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

==23222== by 0x40016E9: ??? (/lib/x86_64-linux-gnu/ld-2.15.so 内)

==23222== リークの概要:

==23222== まだ到達可能: 3,075 ブロックで 91,832 バイト

これら 2 つの関数、mongoc_init() と mongoc_cleanup() についてコメントしたところ、valgrind から、すべてのヒープ ブロックが解放されたことがわかりました。

何か案が?

ありがとう。

4

1 に答える 1