Skip to content

[2.7] bpo-38106: Fix race in PyThread_release_lock that can lead to memory corruption and deadlock - #16047

Merged
vstinner merged 1 commit into
python:2.7from
navytux:2.7-pylock-release-fix
Oct 3, 2019
Merged

[2.7] bpo-38106: Fix race in PyThread_release_lock that can lead to memory corruption and deadlock#16047
vstinner merged 1 commit into
python:2.7from
navytux:2.7-pylock-release-fix

Conversation

@navytux

@navytux navytux commented Sep 12, 2019

Copy link
Copy Markdown

On Darwin, even though this is considered as POSIX, Python uses
mutex+condition variable to implement its lock, and, as of 20190828, Py2.7
implementation, even though similar issue was fixed for Py3 in 2012, contains
synchronization bug: the condition is signalled after mutex unlock while the
correct protocol is to signal condition from under mutex:

https://github.com/python/cpython/blob/v2.7.16-127-g0229b56d8c0/Python/thread_pthread.h#L486-L506
187aa545165d (py3 fix)

PyPy has the same bug for both pypy2 and pypy3:

https://bitbucket.org/pypy/pypy/src/578667b3fef9/rpython/translator/c/src/thread_pthread.c#lines-443:465
https://bitbucket.org/pypy/pypy/src/5b42890d48c3/rpython/translator/c/src/thread_pthread.c#lines-443:465

Signalling condition outside of corresponding mutex is considered OK by
POSIX, but in Python context it can lead to at least memory corruption if we
consider the whole lifetime of python level lock. For example the following
logical scenario:

      T1                                          T2

  sema = Lock()
  sema.acquire()

                                              sema.release()

  sema.acquire()
  free(sema)

  ...

can translate to the next C-level calls:

      T1                                          T2

  # sema = Lock()
  sema = malloc(...)
  sema.locked = 0
  pthread_mutex_init(&sema.mut)
  pthread_cond_init (&sema.lock_released)

  # sema.acquire()
  pthread_mutex_lock(&sema.mut)
  # sees sema.locked == 0
  sema.locked = 1
  pthread_mutex_unlock(&sema.mut)

                                              # sema.release()
                                              pthread_mutex_lock(&sema.mut)
                                              sema.locked = 0
                                              pthread_mutex_unlock(&sema.mut)

                      # OS scheduler gets in and relinquishes control from T2
                      # to another process
                                              ...

  # second sema.acquire()
  pthread_mutex_lock(&sema.mut)
  # sees sema.locked == 0
  sema.locked = 1
  pthread_mutex_unlock(&sema.mut)

  # free(sema)
  pthread_mutex_destroy(&sema.mut)
  pthread_cond_destroy (&sema.lock_released)
  free(sema)

  # ...
  e.g. malloc() which returns memory where sema was

                                              ...
                      # OS scheduler returns control to T2
                      # sema.release() continues
                      #
                      # BUT sema was already freed and writing to anywhere
                      # inside sema block CORRUPTS MEMORY. In particular if
                      # _another_ python-level lock was allocated where sema
                      # block was, writing into the memory can have effect on
                      # further synchronization correctness and in particular
                      # lead to deadlock on lock that was next allocated.
                                              pthread_cond_signal(&sema.lock_released)

Note that T2.pthread_cond_signal(&sema.lock_released) CORRUPTS MEMORY as it
is called when sema memory was already freed and is potentially
reallocated for another object.

The fix is to move pthread_cond_signal to be done under corresponding mutex:

  # sema.release()
  pthread_mutex_lock(&sema.mut)
  sema.locked = 0
  pthread_cond_signal(&sema.lock_released)
  pthread_mutex_unlock(&sema.mut)

To do so this patch cherry-picks thread_pthread.h part of the following 3.2 commit:

commit 187aa545165d8d5eac222ecce29c8a77e0282dd4
Author: Kristján Valur Jónsson <[email protected]>
Date:   Tue Jun 5 22:17:42 2012 +0000

    Signal condition variables with the mutex held.  Destroy condition variables
    before their mutexes.

 Python/ceval_gil.h      |  9 +++++----
 Python/thread_pthread.h | 15 +++++++++------
 2 files changed, 14 insertions(+), 10 deletions(-)

(ceval_gil.h is Python3 specific and does not apply to Python2.7)


Bug history

The bug was there since 1994 - since at least [1]. It was discussed in 2001
with original code author[2], but the code was still considered to be
race-free. In 2010 the place where pthread_cond_signal should be - before or
after pthread_mutex_unlock - was discussed with the rationale to avoid
threads bouncing[3,4,5], and in 2012 pthread_cond_signal was moved to be
called from under mutex, but only for CPython3[6,7].

In 2019 the bug was (re-)discovered while testing Pygolang[8] on macOS with
CPython2 and PyPy2 and PyPy3.

[1] 2c8cb9f3d240
[2] https://bugs.python.org/issue433625
[3] https://bugs.python.org/issue8299#msg103224
[4] https://bugs.python.org/issue8410#msg103313
[5] https://bugs.python.org/issue8411#msg113301
[6] https://bugs.python.org/issue15038#msg163187
[7] 187aa545165d
[8] https://pypi.org/project/pygolang

https://bugs.python.org/issue38106

@the-knights-who-say-ni

Copy link
Copy Markdown

Hello, and thanks for your contribution!

I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA).

CLA Missing

Our records indicate the following people have not signed the CLA:

@navytux

For legal reasons we need all the people listed to sign the CLA before we can look at your contribution. Please follow the steps outlined in the CPython devguide to rectify this issue.

If you have recently signed the CLA, please wait at least one business day
before our records are updated.

You can check yourself to see if the CLA has been received.

Thanks again for the contribution, we look forward to reviewing it!

@navytux

navytux commented Sep 12, 2019

Copy link
Copy Markdown
Author

I have signed PSF CLA, but only 30 minutes ago.

@navytux

navytux commented Sep 12, 2019

Copy link
Copy Markdown
Author

I've amended the patch to make bedevere/news happy with the following Misc/News.d/ interdiff:

--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-09-12-16-36-16.[bpo-38106](https://bugs.python.org/issue38106).4pApn7.rst       
@@ -0,0 +1,2 @@
+Fix race in PyThread_release_lock that was leading to memory corruption and
+deadlocks.

navytux added a commit to navytux/pygolang that referenced this pull request Sep 17, 2019
I reported the bug (see 69db91b "libgolang: Add internal
semaphores") to CPython and PyPy upstreams. PyPy people already fixed it
and the fix, if I understood correctly, should be available as part of
PyPy 7.2 . Let's hope that CPython 2.7 will be also fixed.

- https://bugs.python.org/issue38106
    -> python/cpython#16047
- https://bitbucket.org/pypy/pypy/issues/3072

Added Python-level test triggers the bug with high probability.
Dedicated C-level Semaphore-only test is pending.

@vstinner vstinner Oct 2, 2019

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh! I just created a very similar local change to prepare a pull request... and then I saw that you created a PR! Oops.

I wrote a different description for the change:

    bpo-38106: Fix a race condition in pthread locks
    
    Fix a race condition in locks of the pthread implementation using
    mutex with condition variable. Signal condition variables with the
    mutex held. Destroy condition variables before their mutexes.

Please mention which exact implementation is changed. We do have 2 implementations for pthread :-)

@navytux
navytux force-pushed the 2.7-pylock-release-fix branch from 9b135c0 to 5164ee7 Compare October 2, 2019 10:31
@navytux

navytux commented Oct 2, 2019

Copy link
Copy Markdown
Author

@vstinner thanks for feedback and for noticing my PR. I agree it makes sense to clarify in NEWS about which systems are affected. I've amended the patch with the following interdiff:

--- a/Misc/NEWS.d/next/Core and Builtins/2019-09-12-16-36-16.[bpo-38106](https://bugs.python.org/issue38106).4pApn7.rst       
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-09-12-16-36-16.[bpo-38106](https://bugs.python.org/issue38106).4pApn7.rst       
@@ -1,2 +1,6 @@
 Fix race in PyThread_release_lock that was leading to memory corruption and
 deadlocks.
+
+The fix applies to POSIX systems where Python locks are implemented with mutex
+and condition variable because POSIX semaphores are either not provided, or are
+known to be broken. One particular example of such system is macOS.

Is it ok?

@vstinner vstinner left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I would prefer to have a review of a second core dev.

@pablogsal, @serhiy-storchaka, @methane, @benjaminp: Would you mind to have a look at this fix for a lock race condition?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure how it is rendered. I suggest to merge the sentences into a single paragraph.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I've amended the patch with the following interdiff:

--- a/Misc/NEWS.d/next/Core and Builtins/2019-09-12-16-36-16.bpo-38106.4pApn7.rst       
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-09-12-16-36-16.bpo-38106.4pApn7.rst       
@@ -1,6 +1,5 @@
 Fix race in PyThread_release_lock that was leading to memory corruption and
-deadlocks.
-
-The fix applies to POSIX systems where Python locks are implemented with mutex
-and condition variable because POSIX semaphores are either not provided, or are
-known to be broken. One particular example of such system is macOS.
+deadlocks. The fix applies to POSIX systems where Python locks are implemented
+with mutex and condition variable because POSIX semaphores are either not
+provided, or are known to be broken. One particular example of such system is
+macOS.

For the reference sometimes changelog entries are added as several paragraphs and it renders e.g. like this (search for "bpo-33185: Fixed regression when running pydoc with the -m switch" there).

…emory corruption and deadlock

On Darwin, even though this is considered as POSIX, Python uses
mutex+condition variable to implement its lock, and, as of 20190828, Py2.7
implementation, even though similar issue was fixed for Py3 in 2012, contains
synchronization bug: the condition is signalled after mutex unlock while the
correct protocol is to signal condition from under mutex:

  https://github.com/python/cpython/blob/v2.7.16-127-g0229b56d8c0/Python/thread_pthread.h#L486-L506
  python@187aa545165d (py3 fix)

PyPy has the same bug for both pypy2 and pypy3:

  https://bitbucket.org/pypy/pypy/src/578667b3fef9/rpython/translator/c/src/thread_pthread.c#lines-443:465
  https://bitbucket.org/pypy/pypy/src/5b42890d48c3/rpython/translator/c/src/thread_pthread.c#lines-443:465

Signalling condition outside of corresponding mutex is considered OK by
POSIX, but in Python context it can lead to at least memory corruption if we
consider the whole lifetime of python level lock. For example the following
logical scenario:

      T1                                          T2

  sema = Lock()
  sema.acquire()

                                              sema.release()

  sema.acquire()
  free(sema)

  ...

can translate to the next C-level calls:

      T1                                          T2

  # sema = Lock()
  sema = malloc(...)
  sema.locked = 0
  pthread_mutex_init(&sema.mut)
  pthread_cond_init (&sema.lock_released)

  # sema.acquire()
  pthread_mutex_lock(&sema.mut)
  # sees sema.locked == 0
  sema.locked = 1
  pthread_mutex_unlock(&sema.mut)

                                              # sema.release()
                                              pthread_mutex_lock(&sema.mut)
                                              sema.locked = 0
                                              pthread_mutex_unlock(&sema.mut)

                      # OS scheduler gets in and relinquishes control from T2
                      # to another process
                                              ...

  # second sema.acquire()
  pthread_mutex_lock(&sema.mut)
  # sees sema.locked == 0
  sema.locked = 1
  pthread_mutex_unlock(&sema.mut)

  # free(sema)
  pthread_mutex_destroy(&sema.mut)
  pthread_cond_destroy (&sema.lock_released)
  free(sema)

  # ...
  e.g. malloc() which returns memory where sema was

                                              ...
                      # OS scheduler returns control to T2
                      # sema.release() continues
                      #
                      # BUT sema was already freed and writing to anywhere
                      # inside sema block CORRUPTS MEMORY. In particular if
                      # _another_ python-level lock was allocated where sema
                      # block was, writing into the memory can have effect on
                      # further synchronization correctness and in particular
                      # lead to deadlock on lock that was next allocated.
                                              pthread_cond_signal(&sema.lock_released)

Note that T2.pthread_cond_signal(&sema.lock_released) CORRUPTS MEMORY as it
is called when sema memory was already freed and is potentially
reallocated for another object.

The fix is to move pthread_cond_signal to be done under corresponding mutex:

  # sema.release()
  pthread_mutex_lock(&sema.mut)
  sema.locked = 0
  pthread_cond_signal(&sema.lock_released)
  pthread_mutex_unlock(&sema.mut)

To do so this patch cherry-picks thread_pthread.h part of the following 3.2 commit:

commit 187aa54
Author: Kristján Valur Jónsson <[email protected]>
Date:   Tue Jun 5 22:17:42 2012 +0000

    Signal condition variables with the mutex held.  Destroy condition variables
    before their mutexes.

 Python/ceval_gil.h      |  9 +++++----
 Python/thread_pthread.h | 15 +++++++++------
 2 files changed, 14 insertions(+), 10 deletions(-)

(ceval_gil.h is Python3 specific and does not apply to Python2.7)

--------

Bug history

The bug was there since 1994 - since at least [1]. It was discussed in 2001
with original code author[2], but the code was still considered to be
race-free. In 2010 the place where pthread_cond_signal should be - before or
after pthread_mutex_unlock - was discussed with the rationale to avoid
threads bouncing[3,4,5], and in 2012 pthread_cond_signal was moved to be
called from under mutex, but only for CPython3[6,7].

In 2019 the bug was (re-)discovered while testing Pygolang[8] on macOS with
CPython2 and PyPy2 and PyPy3.

[1] python@2c8cb9f3d240
[2] https://bugs.python.org/issue433625
[3] https://bugs.python.org/issue8299#msg103224
[4] https://bugs.python.org/issue8410#msg103313
[5] https://bugs.python.org/issue8411#msg113301
[6] https://bugs.python.org/issue15038#msg163187
[7] python@187aa545165d
[8] https://pypi.org/project/pygolang
@navytux
navytux force-pushed the 2.7-pylock-release-fix branch from 5164ee7 to 7c11834 Compare October 2, 2019 13:00
@navytux

navytux commented Oct 2, 2019

Copy link
Copy Markdown
Author

LGTM

Thanks for review.

@vstinner
vstinner merged commit c5abd63 into python:2.7 Oct 3, 2019
@vstinner

vstinner commented Oct 3, 2019

Copy link
Copy Markdown
Member

Thank you very much for this amazing commit message @navytux :-D I made some minor edits: I added manually "Co-Authored-By" and "(cherry picked from commit 187aa54)" markups.

@navytux

navytux commented Oct 3, 2019

Copy link
Copy Markdown
Author

@vstinner, @methane, thanks again for feedback and merging. The edits also look good - thanks for adding them. Python2.7 on macOS should be now, hopefully, in a better shape.

Thanks again,
Kirill

@navytux
navytux deleted the 2.7-pylock-release-fix branch October 3, 2019 08:02
navytux added a commit to navytux/pygolang that referenced this pull request Oct 4, 2019
Until now libgolang had semaphore and mutex functionality, but
implemented only internally and not exposed to users. Since for its
pinner thread wendelin.core v2 needs not only nogil channels, but also
nogil mutexes, timers and so on, it is now time to start providing that.

We start with mutexes:

- Expose Mutex from insides of libgolang.cpp to public API in
  libgolang.h . We actually expose both Mutex and Sema because
  semaphores are sometimes also useful for low-level synchronization,
  and because it is easier to export Mutex and Sema both at the same time.

- Provide pyx/nogil API to those as sync.Mutex and sync.Sema.

- Provide corresponding python wrappers.

- Add Pyx-level test for semaphore wakeup when wakeup is done not by the
  same thread which did the original acquire. This is the test that was
  promised in 5142460 (libgolang/thread: Add links to upstream
  PyThread_release_lock bug), and it used to corrupt memory and deadlock
  on macOS due to CPython & PyPy runtime bugs:

    https://bugs.python.org/issue38106
      -> python/cpython#16047
    https://bitbucket.org/pypy/pypy/issues/3072

Note about python wrappers: At present, due to
cython/cython#3165, C-level panic is not
properly translated into Py-level exception in (Py)Sema/Mutex constructors.
This should not pose a real problem in practice though.
@navytux

navytux commented Dec 11, 2019

Copy link
Copy Markdown
Author

For the reference: a test for this issue is included in pygolang: https://lab.nexedi.com/kirr/pygolang/commit/34b7a1f4.

navytux added a commit to navytux/pygolang that referenced this pull request Apr 19, 2024
Background: in 2019 in 4dc1a7f0 (tox += ThreadSanitizer, AddressSanitizer,
Python debug builds) I've added ThreadSanitizer and AddressSanitizer to our
test build matrix. That was done in order to help catching concurrency issues
while doing quality assurance and it indeed worked well(*). However AddressSanitizer
was added with disabled memory leak detection, because at that time there were
tons of various allocations done by Python itself, that were not released on
Python shutdown. So leak reporting pass was disabled to avoid huge non-pygolang
related printouts.

5 years later Pygolang is used by various projects, including in XLTE, where, in
particular, it is used to organize 100Hz polling of Amarisoft eNodeB service to
retrieve information about flows on Data Radio Bearers:

https://lab.nexedi.com/kirr/xlte/-/commit/2a016d48
https://lab.nexedi.com/kirr/xlte/-/blob/8e606c64/amari/drb.py

And everything works relatively well except that recently Joanne approached me
with reports that xamari program, that does the polling, is leaking memory.

During investigation I could manually find at least two causes of the leakage,
and, while working on a fix, discovered third type of leak. Since all those
leaks happen inside Pygolang and at, or around, C level - most of the
time not visible through python objects and so not discoverable via e.g
objgraph, it raises the need to have robust quality assurance procedures
built into maintenance process to cover not only concurrency and memory
safety issues, but also to reliably detect low-level memory leaks.

So before we start fixing any of the leakages, let's activate LeakSanitizer
(https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer) to be
present during tox runs, so that whenever we run something via ASAN in the end
tested process is checked for whether anything was leaked and if yes, which
codepath was used to allocate leaked memory.

Initially I though that it would be hard to have distilled reports, the ones
without much of added noise due to leaks on python side, but it turns out that
starting from py3.11 cpython codebase was improved to release on interpreter
shutdown most of what was allocated, and so with modest suppression rules we
can distill LeakSanitizer output to come with the issues that are relevant to
pygolang itself.

That builds the foundation for making sure there are no memory leaks done by
pygolang in the follow-up patches. The next patch will fix chan leakage in
pychan_from_raw, and there will be more fixes to come later.

For now ASAN builds become broken, but that is good that we can see the issues.
Please see the appendix for current LeakSanitizer output.

/cc ORS team (@jhuge, @lu.xu, @tomo, @xavier_thompson, @Daetalus)
/reviewed-by @jerome
/reviewed-on https://lab.nexedi.com/nexedi/pygolang/-/merge_requests/24

(*) at that time, besides discovering longstanding race-condition in Python itself
(https://bugs.python.org/issue38106, https://github.com/python/cpython/pull/16047),
several concurrency issues were found in pygolang codebase as well:

https://lab.nexedi.com/nexedi/pygolang/commit/dcf4ebd1
https://lab.nexedi.com/nexedi/pygolang/commit/65c43848
https://lab.nexedi.com/nexedi/pygolang/commit/5aa1e899
https://lab.nexedi.com/nexedi/pygolang/commit/fd2a6fab

--------

Appendix. List of errors currently emitted by LeakSanitizer when running Pygolang tests

```
==2061372==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 241136 byte(s) in 28 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a649e3 in _PyObject_NewVar Objects/object.c:332
    #4 0x555687a0c16b in _PyCode_New Objects/codeobject.c:582
    #5 0x555687b12f84 in makecode Python/assemble.c:574
    #6 0x555687b12f84 in _PyAssemble_MakeCodeObject Python/assemble.c:598
    #7 0x555687b2bdbe in optimize_and_assemble_code_unit Python/compile.c:7707
    #8 0x555687b2bdbe in optimize_and_assemble Python/compile.c:7734
    #9 0x555687b3b1a8 in compiler_function_body Python/compile.c:2247
    #10 0x555687b3b1a8 in compiler_function Python/compile.c:2356
    #11 0x555687b3b787 in compiler_body Python/compile.c:1703
    #12 0x555687b3b917 in compiler_codegen Python/compile.c:1719
    #13 0x555687b3c5c3 in compiler_mod Python/compile.c:1747
    #14 0x555687b3c5c3 in _PyAST_Compile Python/compile.c:584
    #15 0x555687b1f9a0 in builtin_compile_impl Python/bltinmodule.c:820
    #16 0x555687b1f9a0 in builtin_compile Python/clinic/bltinmodule.c.h:383
    #17 0x5556879a5949 in _PyEval_EvalFrameDefault Python/bytecodes.c:2966
    #18 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #19 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #20 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #21 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #22 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #23 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #24 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #25 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #26 0x555687a37fd0 in list_extend Objects/listobject.c:944
    #27 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #28 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #29 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #30 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #31 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #32 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #33 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #34 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #35 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #36 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #37 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #38 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #39 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #40 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #41 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #42 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #43 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #44 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #45 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #46 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #47 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #48 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #49 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #50 0x555687ba96f9 in pymain_main Modules/main.c:739
    #51 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #52 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #53 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #54 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 235267 byte(s) in 25 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x5556879faf23 in _PyBytes_FromSize Objects/bytesobject.c:102
    #4 0x5556879faf23 in _PyBytes_FromSize Objects/bytesobject.c:83
    #5 0x5556879faf23 in PyBytes_FromStringAndSize Objects/bytesobject.c:134
    #6 0x555687a0e210 in _PyCode_GetCode Objects/codeobject.c:1535
    #7 0x555687b70339 in w_complex_object Python/marshal.c:554
    #8 0x555687b70339 in w_object Python/marshal.c:375
    #9 0x555687b6fde4 in w_complex_object Python/marshal.c:479
    #10 0x555687b6fde4 in w_object Python/marshal.c:375
    #11 0x555687b703b5 in w_complex_object Python/marshal.c:566
    #12 0x555687b703b5 in w_object Python/marshal.c:375
    #13 0x555687b6f470 in PyMarshal_WriteObjectToString Python/marshal.c:1669
    #14 0x5556879a57c9 in _PyEval_EvalFrameDefault Python/bytecodes.c:2929
    #15 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #16 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #17 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #18 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #19 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #20 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #21 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #22 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #23 0x555687a37fd0 in list_extend Objects/listobject.c:944
    #24 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #25 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #26 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #27 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #28 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #29 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #30 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #31 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #32 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #33 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #34 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #35 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #36 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #37 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #38 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #39 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #40 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #41 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #42 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #43 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #44 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #45 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #46 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #47 0x555687ba96f9 in pymain_main Modules/main.c:739
    #48 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #49 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #50 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #51 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 22656 byte(s) in 9 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a649e3 in _PyObject_NewVar Objects/object.c:332
    #4 0x555687a0c16b in _PyCode_New Objects/codeobject.c:582
    #5 0x555687b12f84 in makecode Python/assemble.c:574
    #6 0x555687b12f84 in _PyAssemble_MakeCodeObject Python/assemble.c:598
    #7 0x555687b2bdbe in optimize_and_assemble_code_unit Python/compile.c:7707
    #8 0x555687b2bdbe in optimize_and_assemble Python/compile.c:7734
    #9 0x555687b3b1a8 in compiler_function_body Python/compile.c:2247
    #10 0x555687b3b1a8 in compiler_function Python/compile.c:2356
    #11 0x555687b3b787 in compiler_body Python/compile.c:1703
    #12 0x555687b3b917 in compiler_codegen Python/compile.c:1719
    #13 0x555687b3c5c3 in compiler_mod Python/compile.c:1747
    #14 0x555687b3c5c3 in _PyAST_Compile Python/compile.c:584
    #15 0x555687b1f9a0 in builtin_compile_impl Python/bltinmodule.c:820
    #16 0x555687b1f9a0 in builtin_compile Python/clinic/bltinmodule.c.h:383
    #17 0x5556879a5949 in _PyEval_EvalFrameDefault Python/bytecodes.c:2966
    #18 0x555687a061f5 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #19 0x555687a061f5 in PyObject_CallOneArg Objects/call.c:401
    #20 0x555687a675f1 in _PyObject_GenericGetAttrWithDict Objects/object.c:1430
    #21 0x555687a6728d in PyObject_GetAttr Objects/object.c:1044
    #22 0x55568799fd39 in _PyEval_EvalFrameDefault Python/bytecodes.c:1794
    #23 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #24 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #25 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #26 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #27 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #28 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #29 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #30 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #31 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #32 0x555687a14520 in method_vectorcall_O Objects/descrobject.c:482
    #33 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #34 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #35 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #36 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #37 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #38 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #39 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #40 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #41 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #42 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #43 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #44 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #45 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #46 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #47 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #48 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #49 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #50 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #51 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #52 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #53 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #54 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #55 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #56 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #57 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #58 0x555687ba96f9 in pymain_main Modules/main.c:739
    #59 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #60 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #61 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #62 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 21199 byte(s) in 9 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x5556879faf23 in _PyBytes_FromSize Objects/bytesobject.c:102
    #4 0x5556879faf23 in _PyBytes_FromSize Objects/bytesobject.c:83
    #5 0x5556879faf23 in PyBytes_FromStringAndSize Objects/bytesobject.c:134
    #6 0x555687a0e210 in _PyCode_GetCode Objects/codeobject.c:1535
    #7 0x555687b70339 in w_complex_object Python/marshal.c:554
    #8 0x555687b70339 in w_object Python/marshal.c:375
    #9 0x555687b6fde4 in w_complex_object Python/marshal.c:479
    #10 0x555687b6fde4 in w_object Python/marshal.c:375
    #11 0x555687b703b5 in w_complex_object Python/marshal.c:566
    #12 0x555687b703b5 in w_object Python/marshal.c:375
    #13 0x555687b6f470 in PyMarshal_WriteObjectToString Python/marshal.c:1669
    #14 0x5556879a57c9 in _PyEval_EvalFrameDefault Python/bytecodes.c:2929
    #15 0x555687a061f5 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #16 0x555687a061f5 in PyObject_CallOneArg Objects/call.c:401
    #17 0x555687a675f1 in _PyObject_GenericGetAttrWithDict Objects/object.c:1430
    #18 0x555687a6728d in PyObject_GetAttr Objects/object.c:1044
    #19 0x55568799fd39 in _PyEval_EvalFrameDefault Python/bytecodes.c:1794
    #20 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #21 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #22 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #23 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #24 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #25 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #26 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #27 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #28 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #29 0x555687a14520 in method_vectorcall_O Objects/descrobject.c:482
    #30 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #31 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #32 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #33 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #34 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #35 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #36 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #37 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #38 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #39 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #40 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #41 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #42 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #43 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #44 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #45 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #46 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #47 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #48 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #49 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #50 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #51 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #52 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #53 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #54 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #55 0x555687ba96f9 in pymain_main Modules/main.c:739
    #56 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #57 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #58 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #59 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 8192 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a70058 in set_table_resize Objects/setobject.c:274
    #4 0x555687a708c1 in set_add_key Objects/setobject.c:354
    #5 0x555687a708c1 in set_update_internal Objects/setobject.c:913
    #6 0x555687a708c1 in set_update_internal Objects/setobject.c:878
    #7 0x555687a70c4e in set_update Objects/setobject.c:933
    #8 0x555687a13046 in method_vectorcall_VARARGS Objects/descrobject.c:331
    #9 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #10 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #11 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #12 0x555687a23bc4 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #13 0x555687a23bc4 in gen_send_ex2 Objects/genobject.c:230
    #14 0x555687a23bc4 in gen_send_ex Objects/genobject.c:274
    #15 0x555687a23bc4 in gen_send Objects/genobject.c:297
    #16 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #17 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #18 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #19 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #20 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #21 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #22 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #23 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #24 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #25 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #26 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #27 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #28 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #29 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #30 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #31 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #32 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #33 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #34 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #35 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #36 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #37 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #38 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #39 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #40 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #41 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #42 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #43 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #44 0x555687ba96f9 in pymain_main Modules/main.c:739
    #45 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #46 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #47 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #48 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 4592 byte(s) in 5 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x5556879a7314 in _PyEval_EvalFrameDefault Python/bytecodes.c:1023
    #8 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #9 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #10 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #11 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #12 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #13 0x5556879a5949 in _PyEval_EvalFrameDefault Python/bytecodes.c:2966
    #14 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #15 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #16 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #17 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #18 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #19 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #20 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #21 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #22 0x555687a37fd0 in list_extend Objects/listobject.c:944
    #23 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #24 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #25 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #26 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #27 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #28 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #29 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #30 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #31 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #32 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #33 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #34 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #35 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #36 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #37 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #38 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #39 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #40 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #41 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #42 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #43 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #44 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #45 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #46 0x555687ba96f9 in pymain_main Modules/main.c:739
    #47 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #48 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #49 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #50 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 4032 byte(s) in 2 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x5556879a4de2 in _PyEval_EvalFrameDefault Python/bytecodes.c:579
    #8 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #9 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #10 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #11 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #12 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #13 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #14 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #15 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #16 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #17 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #18 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #19 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #20 0x555687ba96f9 in pymain_main Modules/main.c:739
    #21 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #22 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #23 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #24 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 3264 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x5556879a4de2 in _PyEval_EvalFrameDefault Python/bytecodes.c:579
    #8 0x555687a09b17 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #9 0x555687a09b17 in method_vectorcall Objects/classobject.c:61
    #10 0x555687a07f9b in PyObject_Call (/home/kirr/local/py3.12/bin/python3.12+0x169f9b) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)
    #11 0x55568799e2ed in _PyEval_EvalFrameDefault Python/bytecodes.c:3254
    #12 0x555687a09a90 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #13 0x555687a09a90 in method_vectorcall Objects/classobject.c:91
    #14 0x55568799e2ed in _PyEval_EvalFrameDefault Python/bytecodes.c:3254
    #15 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #16 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #17 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #18 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #19 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #20 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #21 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #22 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #23 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #24 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #25 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #26 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #27 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #28 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #29 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #30 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #31 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #32 0x555687ba96f9 in pymain_main Modules/main.c:739
    #33 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #34 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #35 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #36 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 3168 byte(s) in 2 object(s) allocated from:
    #0 0x7f27922f2ad8 in realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:85
    #1 0x555687a37ebc in list_resize Objects/listobject.c:82
    #2 0x555687a37ebc in list_extend Objects/listobject.c:892
    #3 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #4 0x555687a09a90 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #5 0x555687a09a90 in method_vectorcall Objects/classobject.c:91
    #6 0x55568799e2ed in _PyEval_EvalFrameDefault Python/bytecodes.c:3254
    #7 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #8 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #9 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #10 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #11 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #12 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #13 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #14 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #15 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #16 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #17 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #18 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #19 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #20 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #21 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #22 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #23 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #24 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #25 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #26 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #27 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #28 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #29 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #30 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #31 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #32 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #33 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #34 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #35 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #36 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #37 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #38 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #39 0x555687ba96f9 in pymain_main Modules/main.c:739
    #40 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #41 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #42 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #43 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 3024 byte(s) in 2 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a649e3 in _PyObject_NewVar Objects/object.c:332
    #4 0x555687a0c16b in _PyCode_New Objects/codeobject.c:582
    #5 0x555687b12f84 in makecode Python/assemble.c:574
    #6 0x555687b12f84 in _PyAssemble_MakeCodeObject Python/assemble.c:598
    #7 0x555687b2bdbe in optimize_and_assemble_code_unit Python/compile.c:7707
    #8 0x555687b2bdbe in optimize_and_assemble Python/compile.c:7734
    #9 0x555687b3b1a8 in compiler_function_body Python/compile.c:2247
    #10 0x555687b3b1a8 in compiler_function Python/compile.c:2356
    #11 0x555687b3b787 in compiler_body Python/compile.c:1703
    #12 0x555687b3b917 in compiler_codegen Python/compile.c:1719
    #13 0x555687b3c5c3 in compiler_mod Python/compile.c:1747
    #14 0x555687b3c5c3 in _PyAST_Compile Python/compile.c:584
    #15 0x555687b1f9a0 in builtin_compile_impl Python/bltinmodule.c:820
    #16 0x555687b1f9a0 in builtin_compile Python/clinic/bltinmodule.c.h:383
    #17 0x5556879a5949 in _PyEval_EvalFrameDefault Python/bytecodes.c:2966
    #18 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #19 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #20 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #21 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #22 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #23 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #24 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #25 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #26 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #27 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #28 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #29 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #30 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #31 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #32 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #33 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #34 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #35 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #36 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #37 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #38 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #39 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #40 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #41 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #42 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #43 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #44 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #45 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #46 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #47 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #48 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #49 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #50 0x555687ba96f9 in pymain_main Modules/main.c:739
    #51 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #52 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #53 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #54 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 2702 byte(s) in 2 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x5556879faf23 in _PyBytes_FromSize Objects/bytesobject.c:102
    #4 0x5556879faf23 in _PyBytes_FromSize Objects/bytesobject.c:83
    #5 0x5556879faf23 in PyBytes_FromStringAndSize Objects/bytesobject.c:134
    #6 0x555687a0e210 in _PyCode_GetCode Objects/codeobject.c:1535
    #7 0x555687b70339 in w_complex_object Python/marshal.c:554
    #8 0x555687b70339 in w_object Python/marshal.c:375
    #9 0x555687b6fde4 in w_complex_object Python/marshal.c:479
    #10 0x555687b6fde4 in w_object Python/marshal.c:375
    #11 0x555687b703b5 in w_complex_object Python/marshal.c:566
    #12 0x555687b703b5 in w_object Python/marshal.c:375
    #13 0x555687b6f470 in PyMarshal_WriteObjectToString Python/marshal.c:1669
    #14 0x5556879a57c9 in _PyEval_EvalFrameDefault Python/bytecodes.c:2929
    #15 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #16 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #17 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #18 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #19 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #20 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #21 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #22 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #23 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #24 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #25 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #26 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #27 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #28 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #29 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #30 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #31 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #32 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #33 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #34 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #35 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #36 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #37 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #38 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #39 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #40 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #41 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #42 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #43 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #44 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #45 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #46 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #47 0x555687ba96f9 in pymain_main Modules/main.c:739
    #48 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #49 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #50 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #51 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 2200 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x555687c0ff1e in bounded_lru_cache_wrapper Modules/_functoolsmodule.c:1067
    #8 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #9 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #10 0x555687a061f5 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #11 0x555687a061f5 in PyObject_CallOneArg Objects/call.c:401
    #12 0x555687a675f1 in _PyObject_GenericGetAttrWithDict Objects/object.c:1430
    #13 0x555687a6728d in PyObject_GetAttr Objects/object.c:1044
    #14 0x55568799fd39 in _PyEval_EvalFrameDefault Python/bytecodes.c:1794
    #15 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #16 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #17 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #18 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #19 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #20 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #21 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #22 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #23 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #24 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #25 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #26 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #27 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #28 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #29 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #30 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #31 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #32 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #33 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #34 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #35 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #36 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #37 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #38 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #39 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #40 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #41 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #42 0x555687ba96f9 in pymain_main Modules/main.c:739
    #43 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #44 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #45 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #46 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 2048 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a70058 in set_table_resize Objects/setobject.c:274
    #4 0x555687a70714 in set_add_key Objects/setobject.c:354
    #5 0x555687a70714 in set_add Objects/setobject.c:1840
    #6 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #7 0x555687a09a90 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #8 0x555687a09a90 in method_vectorcall Objects/classobject.c:91
    #9 0x55568799e2ed in _PyEval_EvalFrameDefault Python/bytecodes.c:3254
    #10 0x555687a08293 in _PyObject_FastCallDictTstate Objects/call.c:133
    #11 0x555687a08293 in _PyObject_Call_Prepend Objects/call.c:508
    #12 0x555687a911ac in slot_tp_init Objects/typeobject.c:9014
    #13 0x555687a7e8d6 in type_call Objects/typeobject.c:1673
    #14 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #15 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #16 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #17 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #18 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #19 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #20 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #21 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #22 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #23 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #24 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #25 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #26 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #27 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #28 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #29 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #30 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #31 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #32 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #33 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #34 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #35 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #36 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #37 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #38 0x555687ba96f9 in pymain_main Modules/main.c:739
    #39 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #40 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #41 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #42 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x555687a65e81 in _PyObject_GenericSetAttrWithDict Objects/object.c:1562
    #8 0x555687a65e81 in PyObject_GenericSetAttr Objects/object.c:1619
    #9 0x555687a67094 in PyObject_SetAttr Objects/object.c:1175
    #10 0x555687b1bbe6 in builtin_setattr_impl Python/bltinmodule.c:1547
    #11 0x555687b1bbe6 in builtin_setattr Python/clinic/bltinmodule.c.h:765
    #12 0x5556879a57c9 in _PyEval_EvalFrameDefault Python/bytecodes.c:2929
    #13 0x555687a08293 in _PyObject_FastCallDictTstate Objects/call.c:133
    #14 0x555687a08293 in _PyObject_Call_Prepend Objects/call.c:508
    #15 0x555687a911ac in slot_tp_init Objects/typeobject.c:9014
    #16 0x555687a7e8d6 in type_call Objects/typeobject.c:1673
    #17 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #18 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #19 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #20 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #21 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #22 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #23 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #24 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #25 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #26 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #27 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #28 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #29 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #30 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #31 0x555687ba96f9 in pymain_main Modules/main.c:739
    #32 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #33 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #34 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #35 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x5556879a4de2 in _PyEval_EvalFrameDefault Python/bytecodes.c:579
    #8 0x555687a09a90 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #9 0x555687a09a90 in method_vectorcall Objects/classobject.c:91
    #10 0x55568799e2ed in _PyEval_EvalFrameDefault Python/bytecodes.c:3254
    #11 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #12 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #13 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #14 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #15 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #16 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #17 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #18 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #19 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #20 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #21 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #22 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #23 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #24 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #25 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #26 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #27 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #28 0x555687ba96f9 in pymain_main Modules/main.c:739
    #29 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #30 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #31 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #32 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x555687a65e81 in _PyObject_GenericSetAttrWithDict Objects/object.c:1562
    #8 0x555687a65e81 in PyObject_GenericSetAttr Objects/object.c:1619
    #9 0x555687a67094 in PyObject_SetAttr Objects/object.c:1175
    #10 0x555687b1bbe6 in builtin_setattr_impl Python/bltinmodule.c:1547
    #11 0x555687b1bbe6 in builtin_setattr Python/clinic/bltinmodule.c.h:765
    #12 0x5556879a57c9 in _PyEval_EvalFrameDefault Python/bytecodes.c:2929
    #13 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #14 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #15 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #16 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #17 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #18 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #19 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #20 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #21 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #22 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #23 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #24 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #25 0x555687ba96f9 in pymain_main Modules/main.c:739
    #26 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #27 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #28 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #29 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4bc0b in clone_combined_dict_keys Objects/dictobject.c:799
    #4 0x555687a53e8f in dict_merge Objects/dictobject.c:2843
    #5 0x555687a56f71 in dict_update_common Objects/dictobject.c:2688
    #6 0x555687a56f71 in dict_update Objects/dictobject.c:2706
    #7 0x555687a13bdb in method_vectorcall_VARARGS_KEYWORDS Objects/descrobject.c:365
    #8 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #9 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #10 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #11 0x555687a09a90 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #12 0x555687a09a90 in method_vectorcall Objects/classobject.c:91
    #13 0x55568799e2ed in _PyEval_EvalFrameDefault Python/bytecodes.c:3254
    #14 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #15 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #16 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #17 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #18 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #19 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #20 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #21 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #22 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #23 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #24 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #25 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #26 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #27 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #28 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #29 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #30 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #31 0x555687ba96f9 in pymain_main Modules/main.c:739
    #32 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #33 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #34 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #35 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x5556879a7314 in _PyEval_EvalFrameDefault Python/bytecodes.c:1023
    #8 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #9 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #10 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #11 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #12 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #13 0x5556879a5949 in _PyEval_EvalFrameDefault Python/bytecodes.c:2966
    #14 0x555687a061f5 in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #15 0x555687a061f5 in PyObject_CallOneArg Objects/call.c:401
    #16 0x555687a675f1 in _PyObject_GenericGetAttrWithDict Objects/object.c:1430
    #17 0x555687a6728d in PyObject_GetAttr Objects/object.c:1044
    #18 0x55568799fd39 in _PyEval_EvalFrameDefault Python/bytecodes.c:1794
    #19 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #20 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #21 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #22 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #23 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #24 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #25 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #26 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #27 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #28 0x555687a14520 in method_vectorcall_O Objects/descrobject.c:482
    #29 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #30 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #31 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #32 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #33 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #34 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #35 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #36 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #37 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #38 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #39 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #40 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #41 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #42 0x555687b22926 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #43 0x555687b22926 in _PyEval_Vector Python/ceval.c:1683
    #44 0x555687b22926 in PyEval_EvalCode Python/ceval.c:578
    #45 0x555687b1ebdf in builtin_exec_impl Python/bltinmodule.c:1096
    #46 0x555687b1ebdf in builtin_exec Python/clinic/bltinmodule.c.h:586
    #47 0x555687a613ae in cfunction_vectorcall_FASTCALL_KEYWORDS Objects/methodobject.c:438
    #48 0x555687a05fff in _PyObject_VectorcallTstate Include/internal/pycore_call.h:92
    #49 0x555687a05fff in PyObject_Vectorcall Objects/call.c:325
    #50 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #51 0x555687ba84fa in pymain_run_module Modules/main.c:300
    #52 0x555687ba8cd9 in pymain_run_python Modules/main.c:623
    #53 0x555687ba96f9 in Py_RunMain Modules/main.c:709
    #54 0x555687ba96f9 in pymain_main Modules/main.c:739
    #55 0x555687ba96f9 in Py_BytesMain Modules/main.c:763
    #56 0x7f2791c46249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #57 0x7f2791c46304 in __libc_start_main_impl ../csu/libc-start.c:360
    #58 0x5556879aa030 in _start (/home/kirr/local/py3.12/bin/python3.12+0x10c030) (BuildId: 90994913e85aac5c35e9f04b53a6eeee5a04786d)

Direct leak of 1104 byte(s) in 1 object(s) allocated from:
    #0 0x7f27922f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x555687a6a9d2 in PyMem_RawMalloc Objects/obmalloc.c:662
    #2 0x555687a6a9d2 in _PyObject_Malloc Objects/obmalloc.c:1569
    #3 0x555687a4d4e8 in new_keys_object Objects/dictobject.c:641
    #4 0x555687a4d4e8 in dictresize Objects/dictobject.c:1449
    #5 0x555687a53277 in insertion_resize Objects/dictobject.c:1194
    #6 0x555687a53277 in insertdict Objects/dictobject.c:1261
    #7 0x5556879a4de2 in _PyEval_EvalFrameDefault Python/bytecodes.c:579
    #8 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #9 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #10 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #11 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #12 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #13 0x555687a22c14 in _PyEval_EvalFrame Include/internal/pycore_ceval.h:89
    #14 0x555687a22c14 in gen_send_ex2 Objects/genobject.c:230
    #15 0x555687a22c14 in gen_iternext Objects/genobject.c:604
    #16 0x555687a37fa5 in list_extend Objects/listobject.c:944
    #17 0x5556879a3a9a in _PyEval_EvalFrameDefault Python/bytecodes.c:3085
    #18 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #19 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #20 0x555687a8ba6c in slot_tp_call Objects/typeobject.c:8770
    #21 0x555687a05733 in _PyObject_MakeTpCall Objects/call.c:240
    #22 0x5556879a3252 in _PyEval_EvalFrameDefault Python/bytecodes.c:2706
    #23 0x555687a0833e in _PyObject_FastCallDictTstate Objects/call.c:144
    #24 0x555687a0833e in _PyObject_Call_Prepend Objects/call.c:508
    #25 0x555687a8ba6c in slot_tp_call Objec…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants