aio-libs/multidict

Multidict 4.7.3 memory leak

Reskov opened this issue · 0 comments

Seems that multidict 4.7.x is leaking, that only happens when I iterate over multidict instance

Please check following code snippet:

import gc
import multidict
import objgraph

print("Multidict:", multidict.__version__)
objgraph.growth() # save current objects state

list(multidict.MultiDict((("arb", "value"), ))) # iter over keys
print("Unreleased objects:")
objgraph.show_growth()
Multidict: 4.7.3
Unreleased objects:
_KeysView        1        +1
MultiDict        1        +1

On the other hand for 4.6.1

Multidict: 4.6.1
Unreleased objects:

Your version of the Python
3.8.1

Your version of the multidict distribution
4.7.3

Snippet without objgraph package

import gc
import multidict

print("Multidict:", multidict.__version__)

gc.collect()
before = len(gc.get_objects())
for i in range(5):
    list(multidict.MultiDict((("arb", "value"),)))
    gc.collect()
    print("Unreleased:", len(gc.get_objects())-before)
Multidict: 4.7.3
Unreleased: 1
Unreleased: 3
Unreleased: 5
Unreleased: 7
Unreleased: 9