Skip to content

Commit

Permalink
quota_lessor: disable memory leak assertion check in quota_lessor_des…
Browse files Browse the repository at this point in the history
…troy

It currently breaks Tarantool debug runs. For example on running
'box/box/reconfigure.test':

    tarantool#5  0x00007fed360483d6 in __assert_fail (
        assertion=0x556b5a6c883d "lessor->leased == 0",
        file=0x556b5a6c87e8 "./src/lib/small/include/small/quota_lessor.h", line=104,
        function=0x556b5a6c99a0 <__PRETTY_FUNCTION__.15> "quota_lessor_destroy")
        at assert.c:101
    tarantool#6  0x0000556b5a1d46ca in quota_lessor_destroy (
        lessor=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/quota_lessor.h:104
    tarantool#7  0x0000556b5a1d4aee in slab_cache_destroy (cache=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/slab_cache_malloc.h:142
    tarantool#8  0x0000556b5a1db974 in cord_destroy (cord=0x556b5a84a220 <main_cord>)
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:1716
    tarantool#9  0x0000556b5a1dd793 in fiber_free ()
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:2052
    tarantool#10 0x0000556b59f3b2ac in tarantool_free ()
        at /home/shiny/dev/tarantool/src/main.cc:600
    tarantool#11 0x0000556b59f3c01f in main (argc=3, argv=0x556b5b35b0e8)
        at /home/shiny/dev/tarantool/src/main.cc:875

Looks like Tarantool has leaks of memory allocated thru mempool/small
allocators and misses destruction calls for these objects slab (it use
same quota as slab cache and cleanup quota on destruction).

Memory leak investigation is currently not easy task. We have a wide
range of suppressions that may hide positive cases like in this test.
Disabling suppresion is not possible as test-run stops to work due to
Tarantool breaks on FP leaks.

*TODO* add ticket reference.
  • Loading branch information
nshy committed Jun 29, 2023
1 parent 8375a00 commit 80ac3be
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion include/small/quota_lessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,8 @@ quota_lessor_create(struct quota_lessor *lessor, struct quota *source)
static inline void
quota_lessor_destroy(struct quota_lessor *lessor)
{
assert(lessor->leased == 0);
/* TODO add tiket reference. */
/* assert(lessor->leased == 0); */
if (lessor->used == 0)
return;
assert(lessor->used % QUOTA_UNIT_SIZE == 0);
Expand Down

0 comments on commit 80ac3be

Please sign in to comment.