Use Valgrind to Check For BSON Data Leaks

A stack-allocated bson_t contains a small internal buffer; it only heap-allocates additional storage if necessary, depending on its data size. Therefore if you forget to call bson_destroy() on a stack-allocated bson_t, it might or might not cause a leak that can be detected by valgrind during testing.

To catch all potential BSON data leaks in your code, configure the BSON_MEMCHECK flag:


With this flag set, every bson_t mallocs at least one byte. Run your program’s unittests with valgrind to verify all bson_t structs are destroyed.

Set the environment variable MONGOC_TEST_VALGRIND to on to skip timing-dependent tests known to fail with valgrind.