[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