Skip to content

Build failure with --enable-experimental-jit and ASan: Memory leak in allocate_executor during module freezing #142985

@ashm-dev

Description

@ashm-dev

Bug report

Bug description:

When building CPython with both AddressSanitizer and the experimental JIT enabled, the build fails during the frozen module generation step. _bootstrap_python triggers a LeakSanitizer error, causing make to abort.

Steps to reproduce:

  1. Configure: CC=clang-21 CXX=clang++-21 ./configure --with-pydebug --with-address-sanitizer --enable-experimental-jit=yes
  2. Build: make -j

Actual Result:
The build fails when running _freeze_module.py for various modules (e.g., abc, io, os) due to memory leaks detected in the JIT optimizer.

Logs:

./_bootstrap_python ./Programs/_freeze_module.py abc ./Lib/abc.py Python/frozen_modules/abc.h
./_bootstrap_python ./Programs/_freeze_module.py codecs ./Lib/codecs.py Python/frozen_modules/codecs.h
./_bootstrap_python ./Programs/_freeze_module.py io ./Lib/io.py Python/frozen_modules/io.h
./_bootstrap_python ./Programs/_freeze_module.py _collections_abc ./Lib/_collections_abc.py Python/frozen_modules/_collections_abc.h
./_bootstrap_python ./Programs/_freeze_module.py _sitebuiltins ./Lib/_sitebuiltins.py Python/frozen_modules/_sitebuiltins.h
./_bootstrap_python ./Programs/_freeze_module.py genericpath ./Lib/genericpath.py Python/frozen_modules/genericpath.h
./_bootstrap_python ./Programs/_freeze_module.py ntpath ./Lib/ntpath.py Python/frozen_modules/ntpath.h
./_bootstrap_python ./Programs/_freeze_module.py posixpath ./Lib/posixpath.py Python/frozen_modules/posixpath.h
./_bootstrap_python ./Programs/_freeze_module.py os ./Lib/os.py Python/frozen_modules/os.h
./_bootstrap_python ./Programs/_freeze_module.py site ./Lib/site.py Python/frozen_modules/site.h
./_bootstrap_python ./Programs/_freeze_module.py stat ./Lib/stat.py Python/frozen_modules/stat.h
./_bootstrap_python ./Programs/_freeze_module.py importlib.util ./Lib/importlib/util.py Python/frozen_modules/importlib.util.h
./_bootstrap_python ./Programs/_freeze_module.py importlib.machinery ./Lib/importlib/machinery.py Python/frozen_modules/importlib.machinery.h
./_bootstrap_python ./Programs/_freeze_module.py runpy ./Lib/runpy.py Python/frozen_modules/runpy.h
./_bootstrap_python ./Programs/_freeze_module.py __hello__ ./Lib/__hello__.py Python/frozen_modules/__hello__.h
./_bootstrap_python ./Programs/_freeze_module.py __phello__ ./Lib/__phello__/__init__.py Python/frozen_modules/__phello__.h
./_bootstrap_python ./Programs/_freeze_module.py __phello__.ham ./Lib/__phello__/ham/__init__.py Python/frozen_modules/__phello__.ham.h
./_bootstrap_python ./Programs/_freeze_module.py __phello__.ham.eggs ./Lib/__phello__/ham/eggs.py Python/frozen_modules/__phello__.ham.eggs.h
./_bootstrap_python ./Programs/_freeze_module.py __phello__.spam ./Lib/__phello__/spam.py Python/frozen_modules/__phello__.spam.h
./_bootstrap_python ./Programs/_freeze_module.py frozen_only ./Tools/freeze/flag.py Python/frozen_modules/frozen_only.h

=================================================================
==101792==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 928 byte(s) in 1 object(s) allocated from:
    #0 0x55a04fc50e05 in malloc (/home/boss/projects/oss/cpython/main/_bootstrap_python+0x3c0e05) (BuildId: feb0b0ad7812cf194946c046f537c5966b282e6d)
    #1 0x55a04ffd4df1 in _PyMem_DebugRawAlloc /home/boss/projects/oss/cpython/main/Objects/obmalloc.c:2889:24
    #2 0x55a04ffd4df1 in _PyMem_DebugRawMalloc /home/boss/projects/oss/cpython/main/Objects/obmalloc.c:2922:12
    #3 0x55a04ffd4df1 in _PyMem_DebugMalloc /home/boss/projects/oss/cpython/main/Objects/obmalloc.c:3087:12
    #4 0x55a050303b30 in _PyObject_MallocWithType /home/boss/projects/oss/cpython/main/./Include/internal/pycore_object_alloc.h:46:17
    #5 0x55a050303b30 in gc_alloc /home/boss/projects/oss/cpython/main/Python/gc.c:2352:17
    #6 0x55a050303b30 in _PyObject_GC_NewVar /home/boss/projects/oss/cpython/main/Python/gc.c:2394:25
    #7 0x55a05074c0c5 in allocate_executor /home/boss/projects/oss/cpython/main/Python/optimizer.c:1245:30
    #8 0x55a05074c0c5 in make_executor_from_uops /home/boss/projects/oss/cpython/main/Python/optimizer.c:1332:35
    #9 0x55a05074c0c5 in uop_optimize /home/boss/projects/oss/cpython/main/Python/optimizer.c:1510:35
    #10 0x55a05074c0c5 in _PyOptimizer_Optimize /home/boss/projects/oss/cpython/main/Python/optimizer.c:164:15
    #11 0x55a0502632c3 in stop_tracing_and_jit /home/boss/projects/oss/cpython/main/Python/ceval.c:1405:15
    #12 0x55a05021f2bd in _PyEval_EvalFrameDefault /home/boss/projects/oss/cpython/main/Python/generated_cases.c.h:11637:27
    #13 0x55a04fecbe0a in _PyEval_EvalFrame /home/boss/projects/oss/cpython/main/./Include/internal/pycore_ceval.h:119:16
    #14 0x55a04fecbe0a in gen_send_ex2 /home/boss/projects/oss/cpython/main/Objects/genobject.c:259:24
    #15 0x55a04fec61e1 in gen_iternext /home/boss/projects/oss/cpython/main/Objects/genobject.c:636:9
    #16 0x55a04ff0c128 in list_extend_iter_lock_held /home/boss/projects/oss/cpython/main/Objects/listobject.c:1263:26
    #17 0x55a04ff03670 in _list_extend /home/boss/projects/oss/cpython/main/Objects/listobject.c:1452:15
    #18 0x55a04ff031d8 in list_extend_impl /home/boss/projects/oss/cpython/main/Objects/listobject.c:1471:9
    #19 0x55a04ff031d8 in list_extend /home/boss/projects/oss/cpython/main/Objects/clinic/listobject.c.h:145:20
    #20 0x55a04ff031d8 in _PyList_Extend /home/boss/projects/oss/cpython/main/Objects/listobject.c:1480:12
    #21 0x55a04fe14697 in PySequence_List /home/boss/projects/oss/cpython/main/Objects/abstract.c:2086:10
    #22 0x55a04fe14abb in PySequence_Fast /home/boss/projects/oss/cpython/main/Objects/abstract.c:2117:9
    #23 0x55a0500bf535 in PyUnicode_Join /home/boss/projects/oss/cpython/main/Objects/unicodeobject.c:9961:12
    #24 0x55a050238553 in _PyEval_EvalFrameDefault /home/boss/projects/oss/cpython/main/Python/generated_cases.c.h:3775:35
    #25 0x55a0501fc1f7 in _PyEval_EvalFrame /home/boss/projects/oss/cpython/main/./Include/internal/pycore_ceval.h:119:16
    #26 0x55a0501fc1f7 in _PyEval_Vector /home/boss/projects/oss/cpython/main/Python/ceval.c:2482:12
    #27 0x55a0501fbbf1 in PyEval_EvalCode /home/boss/projects/oss/cpython/main/Python/ceval.c:1008:21
    #28 0x55a0507e261e in run_eval_code_obj /home/boss/projects/oss/cpython/main/Python/pythonrun.c:1366:12
    #29 0x55a0507e17cb in run_mod /home/boss/projects/oss/cpython/main/Python/pythonrun.c:1469:19
    #30 0x55a0507dbcdc in pyrun_file /home/boss/projects/oss/cpython/main/Python/pythonrun.c:1294:15
    #31 0x55a0507d986c in _PyRun_SimpleFileObject /home/boss/projects/oss/cpython/main/Python/pythonrun.c:518:13
    #32 0x55a0507d8bad in _PyRun_AnyFileObject /home/boss/projects/oss/cpython/main/Python/pythonrun.c:81:15
    #33 0x55a05085637a in pymain_run_file_obj /home/boss/projects/oss/cpython/main/Modules/main.c:410:15
    #34 0x55a05085637a in pymain_run_file /home/boss/projects/oss/cpython/main/Modules/main.c:429:15
    #35 0x55a0508543b3 in pymain_run_python /home/boss/projects/oss/cpython/main/Modules/main.c:691:21
    #36 0x55a0508543b3 in Py_RunMain /home/boss/projects/oss/cpython/main/Modules/main.c:772:5
    #37 0x55a0509fbeeb in main /home/boss/projects/oss/cpython/main/Programs/_bootstrap_python.c:100:12
    #38 0x7f98d8627634  (/usr/lib/libc.so.6+0x27634) (BuildId: 2f722da304c0a508c891285e6840199c35019c8d)
    #39 0x7f98d86276e8 in __libc_start_main (/usr/lib/libc.so.6+0x276e8) (BuildId: 2f722da304c0a508c891285e6840199c35019c8d)
    #40 0x55a04fb4d314 in _start (/home/boss/projects/oss/cpython/main/_bootstrap_python+0x2bd314) (BuildId: feb0b0ad7812cf194946c046f537c5966b282e6d)

SUMMARY: AddressSanitizer: 928 byte(s) leaked in 1 allocation(s).

=================================================================
==101793==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 928 byte(s) in 1 object(s) allocated from:
    #0 0x55ad07d8be05 in malloc (/home/boss/projects/oss/cpython/main/_bootstrap_python+0x3c0e05) (BuildId: feb0b0ad7812cf194946c046f537c5966b282e6d)
    #1 0x55ad0810fdf1 in _PyMem_DebugRawAlloc /home/boss/projects/oss/cpython/main/Objects/obmalloc.c:2889:24
    #2 0x55ad0810fdf1 in _PyMem_DebugRawMalloc /home/boss/projects/oss/cpython/main/Objects/obmalloc.c:2922:12
    #3 0x55ad0810fdf1 in _PyMem_DebugMalloc /home/boss/projects/oss/cpython/main/Objects/obmalloc.c:3087:12
    #4 0x55ad0843eb30 in _PyObject_MallocWithType /home/boss/projects/oss/cpython/main/./Include/internal/pycore_object_alloc.h:46:17
    #5 0x55ad0843eb30 in gc_alloc /home/boss/projects/oss/cpython/main/Python/gc.c:2352:17
    #6 0x55ad0843eb30 in _PyObject_GC_NewVar /home/boss/projects/oss/cpython/main/Python/gc.c:2394:25
    #7 0x55ad088870c5 in allocate_executor /home/boss/projects/oss/cpython/main/Python/optimizer.c:1245:30
    #8 0x55ad088870c5 in make_executor_from_uops /home/boss/projects/oss/cpython/main/Python/optimizer.c:1332:35
    #9 0x55ad088870c5 in uop_optimize /home/boss/projects/oss/cpython/main/Python/optimizer.c:1510:35
    #10 0x55ad088870c5 in _PyOptimizer_Optimize /home/boss/projects/oss/cpython/main/Python/optimizer.c:164:15
    #11 0x55ad0839e2c3 in stop_tracing_and_jit /home/boss/projects/oss/cpython/main/Python/ceval.c:1405:15
    #12 0x55ad0835a2bd in _PyEval_EvalFrameDefault /home/boss/projects/oss/cpython/main/Python/generated_cases.c.h:11637:27
    #13 0x55ad08006e0a in _PyEval_EvalFrame /home/boss/projects/oss/cpython/main/./Include/internal/pycore_ceval.h:119:16
    #14 0x55ad08006e0a in gen_send_ex2 /home/boss/projects/oss/cpython/main/Objects/genobject.c:259:24
    #15 0x55ad080011e1 in gen_iternext /home/boss/projects/oss/cpython/main/Objects/genobject.c:636:9
    #16 0x55ad08047128 in list_extend_iter_lock_held /home/boss/projects/oss/cpython/main/Objects/listobject.c:1263:26
    #17 0x55ad0803e670 in _list_extend /home/boss/projects/oss/cpython/main/Objects/listobject.c:1452:15
    #18 0x55ad0803e1d8 in list_extend_impl /home/boss/projects/oss/cpython/main/Objects/listobject.c:1471:9
    #19 0x55ad0803e1d8 in list_extend /home/boss/projects/oss/cpython/main/Objects/clinic/listobject.c.h:145:20
    #20 0x55ad0803e1d8 in _PyList_Extend /home/boss/projects/oss/cpython/main/Objects/listobject.c:1480:12
    #21 0x55ad07f4f697 in PySequence_List /home/boss/projects/oss/cpython/main/Objects/abstract.c:2086:10
    #22 0x55ad07f4fabb in PySequence_Fast /home/boss/projects/oss/cpython/main/Objects/abstract.c:2117:9
    #23 0x55ad081fa535 in PyUnicode_Join /home/boss/projects/oss/cpython/main/Objects/unicodeobject.c:9961:12
    #24 0x55ad08373553 in _PyEval_EvalFrameDefault /home/boss/projects/oss/cpython/main/Python/generated_cases.c.h:3775:35
    #25 0x55ad083371f7 in _PyEval_EvalFrame /home/boss/projects/oss/cpython/main/./Include/internal/pycore_ceval.h:119:16
    #26 0x55ad083371f7 in _PyEval_Vector /home/boss/projects/oss/cpython/main/Python/ceval.c:2482:12
    #27 0x55ad08336bf1 in PyEval_EvalCode /home/boss/projects/oss/cpython/main/Python/ceval.c:1008:21
    #28 0x55ad0891d61e in run_eval_code_obj /home/boss/projects/oss/cpython/main/Python/pythonrun.c:1366:12
    #29 0x55ad0891c7cb in run_mod /home/boss/projects/oss/cpython/main/Python/pythonrun.c:1469:19
    #30 0x55ad08916cdc in pyrun_file /home/boss/projects/oss/cpython/main/Python/pythonrun.c:1294:15
    #31 0x55ad0891486c in _PyRun_SimpleFileObject /home/boss/projects/oss/cpython/main/Python/pythonrun.c:518:13
    #32 0x55ad08913bad in _PyRun_AnyFileObject /home/boss/projects/oss/cpython/main/Python/pythonrun.c:81:15
    #33 0x55ad0899137a in pymain_run_file_obj /home/boss/projects/oss/cpython/main/Modules/main.c:410:15
    #34 0x55ad0899137a in pymain_run_file /home/boss/projects/oss/cpython/main/Modules/main.c:429:15
    #35 0x55ad0898f3b3 in pymain_run_python /home/boss/projects/oss/cpython/main/Modules/main.c:691:21
    #36 0x55ad0898f3b3 in Py_RunMain /home/boss/projects/oss/cpython/main/Modules/main.c:772:5
    #37 0x55ad08b36eeb in main /home/boss/projects/oss/cpython/main/Programs/_bootstrap_python.c:100:12
    #38 0x7fb048027634  (/usr/lib/libc.so.6+0x27634) (BuildId: 2f722da304c0a508c891285e6840199c35019c8d)
    #39 0x7fb0480276e8 in __libc_start_main (/usr/lib/libc.so.6+0x276e8) (BuildId: 2f722da304c0a508c891285e6840199c35019c8d)
    #40 0x55ad07c88314 in _start (/home/boss/projects/oss/cpython/main/_bootstrap_python+0x2bd314) (BuildId: feb0b0ad7812cf194946c046f537c5966b282e6d)

SUMMARY: AddressSanitizer: 928 byte(s) leaked in 1 allocation(s).
make: *** [Makefile:1965: Python/frozen_modules/_collections_abc.h] Error 1
make: *** [Makefile:1980: Python/frozen_modules/os.h] Error 1

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildThe build process and cross-buildtopic-JITtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions