[Tarantool-patches] [PATCH v1 1/1] netbox: fix memleak in lbox_tuple_format_new()
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Thu Oct 31 01:13:54 MSK 2019
Hi! Thanks for the patch!
On 30/10/2019 11:58, imeevma at tarantool.org wrote:
> Memleak appeared due to the fact that when creating a dictionary
> its reference count is 1 from the beginning. Later, when the
> dictionary is used to create tuple_format, its reference counter
> increased by 1 and it became equal to 2. After removing
> tuple_format, the reference counter for dict decreased by one, so
> it became equal to 1. Since ref counter is not equal to 0, dict
> not deleted, causing a memory leak.
>
> Closes #4588
> ---
> src/box/lua/misc.cc | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/box/lua/misc.cc b/src/box/lua/misc.cc
> index 7b8b9dc..102194e 100644
> --- a/src/box/lua/misc.cc
> +++ b/src/box/lua/misc.cc
> @@ -233,6 +233,7 @@ lbox_tuple_format_new(struct lua_State *L)
> NULL, 0, 0, dict, false, false);
> if (format == NULL)
> return luaT_error(L);
The dict should be unreferenced regardless of tuple_format_new()
result. Now there is a leak, when format == NULL.
> + tuple_dictionary_unref(dict);
> return lbox_push_tuple_format(L, format);
> }
>
More information about the Tarantool-patches
mailing list