This document describes some principles that should be respected when
developing in Babeltrace.

Memory usage :

Since Babeltrace exports a library, we need to make sure that all allocated
memory is freed, we do not want any memory leaks.
Since Babeltrace uses the glib, it is necessary to assist a little valgrind
when trying to identify memory leaks.

libpopt has issues with inconsistency between versions. Namely, libpopt
0.16 allocates memory for the string returned by poptgetArg(), but not
libpopt 0.13. Therefore, we are providing a warning suppression file
that covers this case in the extras/ directory of the source code.

So the proper invocation of Babeltrace with Valgrind is :

G_SLICE=always-malloc G_DEBUG=gc-friendly \
	valgrind --leak-check=full \
	--suppressions=path_to_babeltrace_src/extras/valgrind/popt.supp \
	babeltrace
