Skip to content

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

@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

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

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy