Skip to content

ASan detects memory leaks in Python REPL during immediate exit after startup #135618

Open
@JpengYounger

Description

@JpengYounger

Bug report

Bug description:

To download the source code for CPython 3.11.13, use the following URL:
https://www.python.org/ftp/python/3.11.13/Python-3.11.13.tar.xz

Steps to Compile CPython

tar xf Python-3.11.13.tar.xz
cd Python-3.11.13
mkdir build
cd build
../configure --prefix=/opt/py311 --disable-test-modules --enable-ipv6 --enable-shared --enable-optimizations --with-lto
make

How to Reproduce the Bug: Exiting Python REPL Immediately After Launch

ASAN_OPTIONS=fast_unwind_on_malloc=true LD_PRELOAD=/lib64/libasan.so.8 LD_LIBRARY_PATH=. ./python

Python 3.11.13 (main, Jun 17 2025, 22:27:43) [GCC 14.2.1 20240912 (Red Hat 14.2.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

=================================================================
==95128==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 9240 byte(s) in 1 object(s) allocated from:
    #0 0x7fefb5ec2877 in malloc (/lib64/libasan.so.8+0xc2877) (BuildId: 89c230c891879ee538159d2e56f56784c84db409)
    #1 0x7fefb58dc328 in _PyMem_RawMalloc ../Objects/obmalloc.c:101
    #2 0x7fefb58dc328 in PyMem_RawMalloc ../Objects/obmalloc.c:586
    #3 0x7fefb58dc328 in _PyObject_Malloc ../Objects/obmalloc.c:2003
    #4 0x7fefb58dc328 in _PyObject_Malloc ../Objects/obmalloc.c:1996
    #5 0x7fefb58dc328 in PyObject_Malloc ../Objects/obmalloc.c:712
    #6 0x7fefb58dc328 in new_keys_object ../Objects/dictobject.c:632
    #7 0x7fefb58dc328 in dictresize ../Objects/dictobject.c:1429
    #8 0x7fefb58e27c7 in insertion_resize ../Objects/dictobject.c:1183
    #9 0x7fefb58e27c7 in insertdict ../Objects/dictobject.c:1248
    #10 0x7fefb59b43ef in add_subclass ../Objects/typeobject.c:6546
    #11 0x7fefb58ddf0a in type_ready_add_subclasses ../Objects/typeobject.c:6346
    #12 0x7fefb58ddf0a in type_ready ../Objects/typeobject.c:6477
    #13 0x7fefb58ddf0a in PyType_Ready ../Objects/typeobject.c:6507
    #14 0x7fefb59c2ba2 in PyType_FromModuleAndSpec ../Objects/typeobject.c:3574
    #15 0x7fefb59e33d7 in operator_exec ../Modules/_operator.c:1819
    #16 0x7fefb59bcb6e in PyModule_ExecDef ../Objects/moduleobject.c:419
    #17 0x7fefb59c27a8 in _imp_exec_builtin_impl ../Python/import.c:2438
    #18 0x7fefb59c27a8 in _imp_exec_builtin ../Python/clinic/import.c.h:504
    #19 0x7fefb590ddd0 in cfunction_vectorcall_O ../Objects/methodobject.c:514
    #20 0x7fefb590267c in do_call_core ../Python/ceval.c:7321
    #21 0x7fefb590267c in _PyEval_EvalFrameDefault ../Python/ceval.c:5376
    #22 0x7fefb592068d in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #23 0x7fefb592068d in _PyEval_Vector ../Python/ceval.c:6434
    #24 0x7fefb592068d in _PyFunction_Vectorcall ../Objects/call.c:393
    #25 0x7fefb590f735 in _PyObject_VectorcallTstate ../Include/internal/pycore_call.h:92
    #26 0x7fefb590f735 in object_vacall ../Objects/call.c:819
    #27 0x7fefb59460a1 in PyObject_CallMethodObjArgs ../Objects/call.c:879
    #28 0x7fefb5945c02 in import_find_and_load ../Python/import.c:1748
    #29 0x7fefb5945c02 in PyImport_ImportModuleLevelObject ../Python/import.c:1847
    #30 0x7fefb590009a in import_name ../Python/ceval.c:7422
    #31 0x7fefb590009a in _PyEval_EvalFrameDefault ../Python/ceval.c:3946
    #32 0x7fefb59b84c4 in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #33 0x7fefb59b84c4 in _PyEval_Vector ../Python/ceval.c:6434
    #34 0x7fefb59b81d9 in PyEval_EvalCode ../Python/ceval.c:1148
    #35 0x7fefb59cdb4e in builtin_exec_impl ../Python/bltinmodule.c:1077
    #36 0x7fefb59cdb4e in builtin_exec ../Python/clinic/bltinmodule.c.h:465
    #37 0x7fefb5905905 in cfunction_vectorcall_FASTCALL_KEYWORDS ../Objects/methodobject.c:443
    #38 0x7fefb590267c in do_call_core ../Python/ceval.c:7321
    #39 0x7fefb590267c in _PyEval_EvalFrameDefault ../Python/ceval.c:5376
    #40 0x7fefb592068d in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #41 0x7fefb592068d in _PyEval_Vector ../Python/ceval.c:6434
    #42 0x7fefb592068d in _PyFunction_Vectorcall ../Objects/call.c:393
    #43 0x7fefb590f735 in _PyObject_VectorcallTstate ../Include/internal/pycore_call.h:92
    #44 0x7fefb590f735 in object_vacall ../Objects/call.c:819
    #45 0x7fefb59460a1 in PyObject_CallMethodObjArgs ../Objects/call.c:879
    #46 0x7fefb5945c02 in import_find_and_load ../Python/import.c:1748
    #47 0x7fefb5945c02 in PyImport_ImportModuleLevelObject ../Python/import.c:1847
    #48 0x7fefb590009a in import_name ../Python/ceval.c:7422
    #49 0x7fefb590009a in _PyEval_EvalFrameDefault ../Python/ceval.c:3946
    #50 0x7fefb59b84c4 in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #51 0x7fefb59b84c4 in _PyEval_Vector ../Python/ceval.c:6434
    #52 0x7fefb59b81d9 in PyEval_EvalCode ../Python/ceval.c:1148

Direct leak of 1536 byte(s) in 2 object(s) allocated from:
    #0 0x7fefb5ec2877 in malloc (/lib64/libasan.so.8+0xc2877) (BuildId: 89c230c891879ee538159d2e56f56784c84db409)
    #1 0x7fefb58dc328 in _PyMem_RawMalloc ../Objects/obmalloc.c:101
    #2 0x7fefb58dc328 in PyMem_RawMalloc ../Objects/obmalloc.c:586
    #3 0x7fefb58dc328 in _PyObject_Malloc ../Objects/obmalloc.c:2003
    #4 0x7fefb58dc328 in _PyObject_Malloc ../Objects/obmalloc.c:1996
    #5 0x7fefb58dc328 in PyObject_Malloc ../Objects/obmalloc.c:712
    #6 0x7fefb58dc328 in new_keys_object ../Objects/dictobject.c:632
    #7 0x7fefb58dc328 in dictresize ../Objects/dictobject.c:1429
    #8 0x7fefb58d9a54 in PyDict_SetDefault ../Objects/dictobject.c:3338
    #9 0x7fefb58dec7e in type_add_method ../Objects/typeobject.c:5687
    #10 0x7fefb58dec7e in type_add_methods ../Objects/typeobject.c:5713
    #11 0x7fefb58dec7e in type_ready_fill_dict ../Objects/typeobject.c:6189
    #12 0x7fefb58dec7e in type_ready ../Objects/typeobject.c:6468
    #13 0x7fefb58dec7e in PyType_Ready ../Objects/typeobject.c:6507
    #14 0x7fefb59ae1b6 in _PyTypes_InitTypes ../Objects/object.c:1986
    #15 0x7fefb59ae1b6 in pycore_init_types ../Python/pylifecycle.c:704
    #16 0x7fefb59ae1b6 in pycore_interp_init ../Python/pylifecycle.c:845
    #17 0x7fefb59aa699 in pyinit_config ../Python/pylifecycle.c:901
    #18 0x7fefb59aa699 in pyinit_core ../Python/pylifecycle.c:1064
    #19 0x7fefb59a9a6f in Py_InitializeFromConfig ../Python/pylifecycle.c:1254
    #20 0x7fefb59a9845 in pymain_init ../Modules/main.c:67
    #21 0x7fefb59a9160 in pymain_main ../Modules/main.c:705
    #22 0x7fefb59a8ed6 in Py_BytesMain ../Modules/main.c:738
    #23 0x7fefb5529247 in __libc_start_call_main (/lib64/libc.so.6+0x3247) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc)
    #24 0x7fefb552930a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x330a) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc)
    #25 0x401064 in _start (/root/test/Python-3.11.13/build/python+0x401064) (BuildId: b586fb30b2512fb47a8716060435348b5eacafb0)

Direct leak of 1520 byte(s) in 1 object(s) allocated from:
    #0 0x7fefb5ec2877 in malloc (/lib64/libasan.so.8+0xc2877) (BuildId: 89c230c891879ee538159d2e56f56784c84db409)
    #1 0x7fefb58dc328 in _PyMem_RawMalloc ../Objects/obmalloc.c:101
    #2 0x7fefb58dc328 in PyMem_RawMalloc ../Objects/obmalloc.c:586
    #3 0x7fefb58dc328 in _PyObject_Malloc ../Objects/obmalloc.c:2003
    #4 0x7fefb58dc328 in _PyObject_Malloc ../Objects/obmalloc.c:1996
    #5 0x7fefb58dc328 in PyObject_Malloc ../Objects/obmalloc.c:712
    #6 0x7fefb58dc328 in new_keys_object ../Objects/dictobject.c:632
    #7 0x7fefb58dc328 in dictresize ../Objects/dictobject.c:1429
    #8 0x7fefb58e27c7 in insertion_resize ../Objects/dictobject.c:1183
    #9 0x7fefb58e27c7 in insertdict ../Objects/dictobject.c:1248
    #10 0x7fefb58de980 in type_dict_set_doc ../Objects/typeobject.c:6167
    #11 0x7fefb58de980 in type_ready_fill_dict ../Objects/typeobject.c:6198
    #12 0x7fefb58de980 in type_ready ../Objects/typeobject.c:6468
    #13 0x7fefb58de980 in PyType_Ready ../Objects/typeobject.c:6507
    #14 0x7fefb59c2ec1 in PyModule_AddType ../Python/modsupport.c:697
    #15 0x7fefb59e3abf in collections_exec ../Modules/_collectionsmodule.c:2587
    #16 0x7fefb59bcb6e in PyModule_ExecDef ../Objects/moduleobject.c:419
    #17 0x7fefb59c27a8 in _imp_exec_builtin_impl ../Python/import.c:2438
    #18 0x7fefb59c27a8 in _imp_exec_builtin ../Python/clinic/import.c.h:504
    #19 0x7fefb590ddd0 in cfunction_vectorcall_O ../Objects/methodobject.c:514
    #20 0x7fefb590267c in do_call_core ../Python/ceval.c:7321
    #21 0x7fefb590267c in _PyEval_EvalFrameDefault ../Python/ceval.c:5376
    #22 0x7fefb592068d in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #23 0x7fefb592068d in _PyEval_Vector ../Python/ceval.c:6434
    #24 0x7fefb592068d in _PyFunction_Vectorcall ../Objects/call.c:393
    #25 0x7fefb590f735 in _PyObject_VectorcallTstate ../Include/internal/pycore_call.h:92
    #26 0x7fefb590f735 in object_vacall ../Objects/call.c:819
    #27 0x7fefb59460a1 in PyObject_CallMethodObjArgs ../Objects/call.c:879
    #28 0x7fefb5945c02 in import_find_and_load ../Python/import.c:1748
    #29 0x7fefb5945c02 in PyImport_ImportModuleLevelObject ../Python/import.c:1847
    #30 0x7fefb590009a in import_name ../Python/ceval.c:7422
    #31 0x7fefb590009a in _PyEval_EvalFrameDefault ../Python/ceval.c:3946
    #32 0x7fefb59b84c4 in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #33 0x7fefb59b84c4 in _PyEval_Vector ../Python/ceval.c:6434
    #34 0x7fefb59b81d9 in PyEval_EvalCode ../Python/ceval.c:1148
    #35 0x7fefb59cdb4e in builtin_exec_impl ../Python/bltinmodule.c:1077
    #36 0x7fefb59cdb4e in builtin_exec ../Python/clinic/bltinmodule.c.h:465
    #37 0x7fefb5905905 in cfunction_vectorcall_FASTCALL_KEYWORDS ../Objects/methodobject.c:443
    #38 0x7fefb590267c in do_call_core ../Python/ceval.c:7321
    #39 0x7fefb590267c in _PyEval_EvalFrameDefault ../Python/ceval.c:5376
    #40 0x7fefb592068d in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #41 0x7fefb592068d in _PyEval_Vector ../Python/ceval.c:6434
    #42 0x7fefb592068d in _PyFunction_Vectorcall ../Objects/call.c:393
    #43 0x7fefb590f735 in _PyObject_VectorcallTstate ../Include/internal/pycore_call.h:92
    #44 0x7fefb590f735 in object_vacall ../Objects/call.c:819
    #45 0x7fefb59460a1 in PyObject_CallMethodObjArgs ../Objects/call.c:879
    #46 0x7fefb5945c02 in import_find_and_load ../Python/import.c:1748
    #47 0x7fefb5945c02 in PyImport_ImportModuleLevelObject ../Python/import.c:1847
    #48 0x7fefb590009a in import_name ../Python/ceval.c:7422
    #49 0x7fefb590009a in _PyEval_EvalFrameDefault ../Python/ceval.c:3946
    #50 0x7fefb59b84c4 in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #51 0x7fefb59b84c4 in _PyEval_Vector ../Python/ceval.c:6434
    #52 0x7fefb59b81d9 in PyEval_EvalCode ../Python/ceval.c:1148
    #53 0x7fefb59cdb4e in builtin_exec_impl ../Python/bltinmodule.c:1077
    #54 0x7fefb59cdb4e in builtin_exec ../Python/clinic/bltinmodule.c.h:465

Direct leak of 1332 byte(s) in 2 object(s) allocated from:
    #0 0x7fefb5ec2877 in malloc (/lib64/libasan.so.8+0xc2877) (BuildId: 89c230c891879ee538159d2e56f56784c84db409)
    #1 0x7fefb58d836c in _PyMem_RawMalloc ../Objects/obmalloc.c:101
    #2 0x7fefb58d836c in PyMem_RawMalloc ../Objects/obmalloc.c:586
    #3 0x7fefb58d836c in _PyObject_Malloc ../Objects/obmalloc.c:2003
    #4 0x7fefb58d836c in _PyObject_Malloc ../Objects/obmalloc.c:1996
    #5 0x7fefb58d836c in PyObject_Malloc ../Objects/obmalloc.c:712
    #6 0x7fefb58d836c in PyUnicode_New ../Objects/unicodeobject.c:1425
    #7 0x7fefb58d836c in unicode_decode_utf8 ../Objects/unicodeobject.c:5117
    #8 0x7fefb58de962 in type_dict_set_doc ../Objects/typeobject.c:6162
    #9 0x7fefb58de962 in type_ready_fill_dict ../Objects/typeobject.c:6198
    #10 0x7fefb58de962 in type_ready ../Objects/typeobject.c:6468
    #11 0x7fefb58de962 in PyType_Ready ../Objects/typeobject.c:6507
    #12 0x7fefb59c2ec1 in PyModule_AddType ../Python/modsupport.c:697
    #13 0x7fefb59e2392 in itertoolsmodule_exec ../Modules/itertoolsmodule.c:4879
    #14 0x7fefb59bcb6e in PyModule_ExecDef ../Objects/moduleobject.c:419
    #15 0x7fefb59c27a8 in _imp_exec_builtin_impl ../Python/import.c:2438
    #16 0x7fefb59c27a8 in _imp_exec_builtin ../Python/clinic/import.c.h:504
    #17 0x7fefb590ddd0 in cfunction_vectorcall_O ../Objects/methodobject.c:514
    #18 0x7fefb590267c in do_call_core ../Python/ceval.c:7321
    #19 0x7fefb590267c in _PyEval_EvalFrameDefault ../Python/ceval.c:5376
    #20 0x7fefb592068d in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #21 0x7fefb592068d in _PyEval_Vector ../Python/ceval.c:6434
    #22 0x7fefb592068d in _PyFunction_Vectorcall ../Objects/call.c:393
    #23 0x7fefb590f735 in _PyObject_VectorcallTstate ../Include/internal/pycore_call.h:92
    #24 0x7fefb590f735 in object_vacall ../Objects/call.c:819
    #25 0x7fefb59460a1 in PyObject_CallMethodObjArgs ../Objects/call.c:879
    #26 0x7fefb5945c02 in import_find_and_load ../Python/import.c:1748
    #27 0x7fefb5945c02 in PyImport_ImportModuleLevelObject ../Python/import.c:1847
    #28 0x7fefb590009a in import_name ../Python/ceval.c:7422
    #29 0x7fefb590009a in _PyEval_EvalFrameDefault ../Python/ceval.c:3946
    #30 0x7fefb59b84c4 in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #31 0x7fefb59b84c4 in _PyEval_Vector ../Python/ceval.c:6434
    #32 0x7fefb59b81d9 in PyEval_EvalCode ../Python/ceval.c:1148
    #33 0x7fefb59cdb4e in builtin_exec_impl ../Python/bltinmodule.c:1077
    #34 0x7fefb59cdb4e in builtin_exec ../Python/clinic/bltinmodule.c.h:465
    #35 0x7fefb5905905 in cfunction_vectorcall_FASTCALL_KEYWORDS ../Objects/methodobject.c:443
    #36 0x7fefb590267c in do_call_core ../Python/ceval.c:7321
    #37 0x7fefb590267c in _PyEval_EvalFrameDefault ../Python/ceval.c:5376
    #38 0x7fefb592068d in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #39 0x7fefb592068d in _PyEval_Vector ../Python/ceval.c:6434
    #40 0x7fefb592068d in _PyFunction_Vectorcall ../Objects/call.c:393
    #41 0x7fefb590f735 in _PyObject_VectorcallTstate ../Include/internal/pycore_call.h:92
    #42 0x7fefb590f735 in object_vacall ../Objects/call.c:819
    #43 0x7fefb59460a1 in PyObject_CallMethodObjArgs ../Objects/call.c:879
    #44 0x7fefb5945c02 in import_find_and_load ../Python/import.c:1748
    #45 0x7fefb5945c02 in PyImport_ImportModuleLevelObject ../Python/import.c:1847
    #46 0x7fefb590009a in import_name ../Python/ceval.c:7422
    #47 0x7fefb590009a in _PyEval_EvalFrameDefault ../Python/ceval.c:3946
    #48 0x7fefb59b84c4 in _PyEval_EvalFrame ../Include/internal/pycore_ceval.h:73
    #49 0x7fefb59b84c4 in _PyEval_Vector ../Python/ceval.c:6434
    #50 0x7fefb59b81d9 in PyEval_EvalCode ../Python/ceval.c:1148
    #51 0x7fefb59cdb4e in builtin_exec_impl ../Python/bltinmodule.c:1077
    #52 0x7fefb59cdb4e in builtin_exec ../Python/clinic/bltinmodule.c.h:465
    #53 0x7fefb5905905 in cfunction_vectorcall_FASTCALL_KEYWORDS ../Objects/methodobject.c:443

SUMMARY: AddressSanitizer: 13628 byte(s) leaked in 6 allocation(s).

[config.log](https://github.com/user-attachments/files/20778036/config.log)

CPython versions tested on:

3.11

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtopic-replRelated to the interactive shelltype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions