Leak when marshaling GValue return/output args with transfer-full
Submitted by Simon Feltman
Link to original bug (#736514)
Description
$ make check.valgrind TEST_NAMES=test_everything.TestEverything.test_strv_in_gvalue
==7604== 70 (24 direct, 46 indirect) bytes in 1 blocks are definitely lost in loss record 3,973 of 8,963
==7604== at 0x4C291D4: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7604== by 0x14D7BE5D: g_malloc0 (gmem.c:127)
==7604== by 0x14D7C171: g_malloc0_n (gmem.c:356)
==7604== by 0x1A9A59FF: regress_test_strv_in_gvalue (regress.c:3933)
==7604== by 0xE8F1D8B: ffi_call_unix64 (in /usr/lib64/libffi.so.6.0.1)
==7604== by 0xE8F16BB: ffi_call (in /usr/lib64/libffi.so.6.0.1)
==7604== by 0x13E9E5B3: pygi_invoke_c_callable (pygi-invoke.c:628)
==7604== by 0x13E9F893: _function_cache_invoke_real (pygi-cache.c:714)
==7604== by 0x13E9FA92: pygi_function_cache_invoke (pygi-cache.c:793)
==7604== by 0x13E9E6B5: pygi_callable_info_invoke (pygi-invoke.c:671)
==7604== by 0x13E9E7F9: _wrap_g_callable_info_invoke (pygi-invoke.c:708)
==7604== by 0x13E8B79A: _callable_info_call (pygi-info.c:568)
==7604== by 0x13E8B998: _function_info_call (pygi-info.c:623)
==7604== by 0x4E9047B: PyObject_Call (in /usr/lib64/libpython3.3m.so.1.0)
==7604== by 0x4F3D0F6: PyEval_EvalFrameEx (in /usr/lib64/libpython3.3m.so.1.0)
==7604== by 0x4F40869: PyEval_EvalFrameEx (in /usr/lib64/libpython3.3m.so.1.0)
==7604== by 0x4F42174: PyEval_EvalCodeEx (in /usr/lib64/libpython3.3m.so.1.0)
==7604== by 0x4F40573: PyEval_EvalFrameEx (in /usr/lib64/libpython3.3m.so.1.0)
==7604== by 0x4F42174: PyEval_EvalCodeEx (in /usr/lib64/libpython3.3m.so.1.0)
==7604== by 0x4EB7432: ??? (in /usr/lib64/libpython3.3m.so.1.0)
We are not taking into account transfer annotations when marshaling GValues to Python: https://git.gnome.org/browse/pygobject/tree/gi/pygi-struct-marshal.c?id=3.13.91#n377