Сизиф, python3-module-rpm-4.13.0.1-alt39 Для поддержки sisyphus_riscv64 и sisyphus_loongarch64 у нас есть несколько аналитических инструментов, написаных на python; некоторые из них используют модуль rpm для чтения pkglist'ов. Было замечено, что если перечитывать pkglist'ы несколько раз, вся память очень быстро куда-то девается. Вот несложный способ воспроизвести проблему: $ wget 'http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/noarch/base/pkglist.classic.xz' $ xz -d pkglist.classic.xz $ cat test.py import sys import rpm for _ in range(int(sys.argv[1])): with open("pkglist.classic") as f: rpms = rpm.readHeaderListFromFD(f.fileno()) print(len(rpms)) del rpms $ python3 test.py 1 19279 По данным time, maxresident растёт линейно с ростом argv[1], valgrind --leak-check=yes больше всего ругается на: 96,513,220 (771,080 direct, 95,742,140 indirect) bytes in 19,277 blocks are definitely lost in loss record 453 of 453 at 0x48461E8: calloc (vg_replace_malloc.c:1117) by 0x5480053: rcalloc (rpmmalloc.c:55) by 0x53F8346: UnknownInlinedFun (header.c:171) by 0x53F8346: headerImport (header.c:829) by 0x53F8B2F: headerRead (header.c:1029) by 0x53A94DD: hdr_new (header-py.c:403) by 0x2DCABA: UnknownInlinedFun (typeobject.c:1100) by 0x2DCABA: _PyObject_MakeTpCall (call.c:214) by 0x2E93A5: _PyEval_EvalFrameDefault (ceval.c:4774) by 0x3A5AF8: UnknownInlinedFun (pycore_ceval.h:73) by 0x3A5AF8: _PyEval_Vector (ceval.c:6439) by 0x3A52E2: PyEval_EvalCode (ceval.c:1154) by 0x3C3149: run_eval_code_obj (pythonrun.c:1714) by 0x3BF8B2: run_mod (pythonrun.c:1735) by 0x3D47A1: pyrun_file (pythonrun.c:1630) Алексей Шепляков, которого эта проблема больше всего зацепила, предположил, что это https://bugzilla.redhat.com/show_bug.cgi?id=1358467 . И действительно cherry pick 40326b5724b0cd55a21b2d86eeef344e4826f863 поверх rpm 4.13.0.1-alt39 помогает: valgrind не находит больше ничего definitely lost, а maxresident по данным time почти не растёт с ростом argv[0].
Задача с исправлением: https://git.altlinux.org/tasks/330954/ Please review && approve.
rpm-4.13.0.1-alt40 -> sisyphus: Wed Oct 04 2023 Alexey Sheplyakov <asheplyakov@altlinux> 4.13.0.1-alt40 - Plug a memory leak in python bindings (closes: #47836).