Bug 1217075 - yast-python bindings leak
Summary: yast-python bindings leak
Status: NEW
Alias: None
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: AutoYaST (show other bugs)
Version: Current
Hardware: Other Other
: P5 - None : Normal (vote)
Target Milestone: ---
Assignee: Noel Power
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-11-13 09:43 UTC by Noel Power
Modified: 2023-11-13 09:43 UTC (History)
0 users

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Noel Power 2023-11-13 09:43:14 UTC
when using a long running yast ui written in python I observe the process size keeps increasing. Normally this is not problematic as yast UI clients are short lived. However in my case I am using a yast ui written in python that runs indefinitely on a low memory device (raspberry pi) and this becomes problematic.

This is a pretty specific and not normal use case so normal priority and no need for backporting imho

a valgrind trace as follows shows where the leak is occuring


    ==7090== 36,488 (968 direct, 35,520 indirect) bytes in 121 blocks are definitely lost in loss record 22,946 of 22,956
    ==7090==    at 0x4843F0F: operator new(unsigned long) (vg_replace_malloc.c:472)
    ==7090==    by 0x5882E06: _wrap_new_Term__SWIG_1 (yast-core_wrap.cxx:6201)
    ==7090==    by 0x5882E06: _wrap_new_Term (yast-core_wrap.cxx:6268)
    ==7090==    by 0x5A77B8F: cfunction_call (methodobject.c:553)
    ==7090==    by 0x5A882C0: _PyObject_Call (call.c:343)
    ==7090==    by 0x5A68B76: _PyEval_EvalFrameDefault (ceval.c:5381)
    ==7090==    by 0x5A608B9: UnknownInlinedFun (pycore_ceval.h:73)
    ==7090==    by 0x5A608B9: _PyEval_Vector (ceval.c:6439)
    ==7090==    by 0x5A5EC3A: UnknownInlinedFun (call.c:393)
    ==7090==    by 0x5A5EC3A: _PyObject_FastCallDictTstate (call.c:141)
    ==7090==    by 0x5A86C7E: UnknownInlinedFun (call.c:482)
    ==7090==    by 0x5A86C7E: slot_tp_init (typeobject.c:7854)
    ==7090==    by 0x5A5C0C2: type_call (typeobject.c:1103)
    ==7090==    by 0x5A5BECE: _PyObject_MakeTpCall (call.c:214)
    ==7090==    by 0x5A646F9: _PyEval_EvalFrameDefault (ceval.c:4774)
    ==7090==    by 0x5A608B9: UnknownInlinedFun (pycore_ceval.h:73)
    ==7090==    by 0x5A608B9: _PyEval_Vector (ceval.c:6439)
    ==7090==    by 0x5A68B76: _PyEval_EvalFrameDefault (ceval.c:5381)
    ==7090==    by 0x5A608B9: UnknownInlinedFun (pycore_ceval.h:73)
    ==7090==    by 0x5A608B9: _PyEval_Vector (ceval.c:6439)
    ==7090==    by 0x5AE385E: PyEval_EvalCode (ceval.c:1154)
    ==7090==    by 0x5B01282: run_eval_code_obj (pythonrun.c:1712)
    ==7090==    by 0x5AFD979: run_mod (pythonrun.c:1733)
    ==7090==    by 0x5B136C1: pyrun_file (pythonrun.c:1628)
    ==7090==    by 0x5B13183: _PyRun_SimpleFileObject (pythonrun.c:440)
    ==7090==    by 0x5A43FAF: PyRun_SimpleFileExFlags (pythonrun.c:473)
    ==7090==    by 0x588C515: callClient(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (Y2PythonClientComponent.cc:69)
    ==7090==    by 0x588C76D: Y2PythonClientComponent::doActualWork(YCPList const&, Y2Component*) (Y2PythonClientComponent.cc:98)
    ==7090==    by 0x48B69DA: main (genericfrontend.cc:766)