Skip to content

Leaks when importing yaml with the address sanitizer #914

@jmcarcell

Description

@jmcarcell

I get some leaks when using the address sanitizer and importing yaml. After

$ export LD_PRELOAD=libasan.so
$ python -c "import yaml"

I get:

==160520==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7f1cc4320cb5 in malloc (/usr/lib/libasan.so+0x120cb5) (BuildId: 0b96d08695bbce2da9d4770c29ad2e72fb536f47)
    #1 0x7f1cc3b68d83  (/usr/lib/libpython3.14.so.1.0+0x168d83) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #2 0x7f1cc3b6815b  (/usr/lib/libpython3.14.so.1.0+0x16815b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #3 0x7b1cbfc63298 in __pyx_pymod_exec__yaml /tmp/pip-install-bu_ce05l/pyyaml_c94b2d04461646e8baf6f170be2973b8/yaml/_yaml.c:24348
    #4 0x7f1cc3c818e7 in PyModule_ExecDef (/usr/lib/libpython3.14.so.1.0+0x2818e7) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #5 0x7f1cc3c891e3  (/usr/lib/libpython3.14.so.1.0+0x2891e3) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #6 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #7 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #8 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #9 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #10 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #11 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #12 0x7f1cc3b990ac in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x1990ac) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #13 0x7f1cc3b8b804  (/usr/lib/libpython3.14.so.1.0+0x18b804) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #14 0x7f1cc3c76d2d in PyEval_EvalCode (/usr/lib/libpython3.14.so.1.0+0x276d2d) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #15 0x7f1cc3c95c29  (/usr/lib/libpython3.14.so.1.0+0x295c29) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #16 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #17 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #18 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #19 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #20 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #21 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #22 0x7f1cc3b990ac in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x1990ac) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #23 0x7f1cc3b8b804  (/usr/lib/libpython3.14.so.1.0+0x18b804) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #24 0x7f1cc3c76d2d in PyEval_EvalCode (/usr/lib/libpython3.14.so.1.0+0x276d2d) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #25 0x7f1cc3c95c29  (/usr/lib/libpython3.14.so.1.0+0x295c29) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #26 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #27 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #28 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #29 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)

Direct leak of 768 byte(s) in 1 object(s) allocated from:
    #0 0x7f1cc4320cb5 in malloc (/usr/lib/libasan.so+0x120cb5) (BuildId: 0b96d08695bbce2da9d4770c29ad2e72fb536f47)
    #1 0x7f1cc3b68d83  (/usr/lib/libpython3.14.so.1.0+0x168d83) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #2 0x7f1cc3b69a53  (/usr/lib/libpython3.14.so.1.0+0x169a53) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #3 0x7f1cc3b5ff49  (/usr/lib/libpython3.14.so.1.0+0x15ff49) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #4 0x7f1cc3b6be41 in PyType_FromMetaclass (/usr/lib/libpython3.14.so.1.0+0x16be41) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #5 0x7b1cbfc68014 in __Pyx_FetchCommonTypeFromSpec /tmp/pip-install-bu_ce05l/pyyaml_c94b2d04461646e8baf6f170be2973b8/yaml/_yaml.c:28524
    #6 0x7b1cbfc61602 in __pyx_CyFunction_init /tmp/pip-install-bu_ce05l/pyyaml_c94b2d04461646e8baf6f170be2973b8/yaml/_yaml.c:29701
    #7 0x7b1cbfc61602 in __Pyx_InitGlobals /tmp/pip-install-bu_ce05l/pyyaml_c94b2d04461646e8baf6f170be2973b8/yaml/_yaml.c:25352
    #8 0x7b1cbfc61602 in __pyx_pymod_exec__yaml /tmp/pip-install-bu_ce05l/pyyaml_c94b2d04461646e8baf6f170be2973b8/yaml/_yaml.c:23744
    #9 0x7f1cc3c818e7 in PyModule_ExecDef (/usr/lib/libpython3.14.so.1.0+0x2818e7) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #10 0x7f1cc3c891e3  (/usr/lib/libpython3.14.so.1.0+0x2891e3) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #11 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #12 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #13 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #14 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #15 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #16 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #17 0x7f1cc3b990ac in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x1990ac) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #18 0x7f1cc3b8b804  (/usr/lib/libpython3.14.so.1.0+0x18b804) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #19 0x7f1cc3c76d2d in PyEval_EvalCode (/usr/lib/libpython3.14.so.1.0+0x276d2d) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #20 0x7f1cc3c95c29  (/usr/lib/libpython3.14.so.1.0+0x295c29) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #21 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #22 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #23 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #24 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #25 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #26 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #27 0x7f1cc3b990ac in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x1990ac) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #28 0x7f1cc3b8b804  (/usr/lib/libpython3.14.so.1.0+0x18b804) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #29 0x7f1cc3c76d2d in PyEval_EvalCode (/usr/lib/libpython3.14.so.1.0+0x276d2d) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #30 0x7f1cc3c95c29  (/usr/lib/libpython3.14.so.1.0+0x295c29) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #31 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)

Direct leak of 1 byte(s) in 1 object(s) allocated from:
    #0 0x7f1cc4320cb5 in malloc (/usr/lib/libasan.so+0x120cb5) (BuildId: 0b96d08695bbce2da9d4770c29ad2e72fb536f47)
    #1 0x7f1cc3b621ff in PyMem_Malloc (/usr/lib/libpython3.14.so.1.0+0x1621ff) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #2 0x7f1cc3c8188b in PyModule_ExecDef (/usr/lib/libpython3.14.so.1.0+0x28188b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #3 0x7f1cc3c891e3  (/usr/lib/libpython3.14.so.1.0+0x2891e3) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #4 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #5 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #6 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #7 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #8 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #9 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #10 0x7f1cc3b990ac in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x1990ac) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #11 0x7f1cc3b8b804  (/usr/lib/libpython3.14.so.1.0+0x18b804) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #12 0x7f1cc3c76d2d in PyEval_EvalCode (/usr/lib/libpython3.14.so.1.0+0x276d2d) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #13 0x7f1cc3c95c29  (/usr/lib/libpython3.14.so.1.0+0x295c29) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #14 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #15 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #16 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #17 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #18 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #19 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #20 0x7f1cc3b990ac in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x1990ac) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #21 0x7f1cc3b8b804  (/usr/lib/libpython3.14.so.1.0+0x18b804) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #22 0x7f1cc3c76d2d in PyEval_EvalCode (/usr/lib/libpython3.14.so.1.0+0x276d2d) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #23 0x7f1cc3c95c29  (/usr/lib/libpython3.14.so.1.0+0x295c29) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #24 0x7f1cc3b94f93 in _PyEval_EvalFrameDefault (/usr/lib/libpython3.14.so.1.0+0x194f93) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #25 0x7f1cc3bbe86b  (/usr/lib/libpython3.14.so.1.0+0x1be86b) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #26 0x7f1cc3baf890  (/usr/lib/libpython3.14.so.1.0+0x1af890) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #27 0x7f1cc3bef626 in PyObject_CallMethodObjArgs (/usr/lib/libpython3.14.so.1.0+0x1ef626) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #28 0x7f1cc3bee784 in PyImport_ImportModuleLevelObject (/usr/lib/libpython3.14.so.1.0+0x1ee784) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)
    #29 0x7f1cc3c78823 in _PyEval_ImportName (/usr/lib/libpython3.14.so.1.0+0x278823) (BuildId: 52cae3244274805bf3e4640e0f90a8a50c9643c9)

This is on Arch Linux with GCC 15.2.1 (concretely, for libasan I get libasan 15.2.1+r604+g0b99615a8aef-1) and pyyaml. 6.0.3-2. I tried to install 6.0.2 since I have a different environment (Alma 9) with GCC 15 and pyyaml 6.0.2 where this doesn't happen but I still get the same leaks. The context is that I was investigating leaks in a different program and found it was due to importing pyyaml. I guess the next step is to build Python with debug symbols to be able to see what's going on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions