Skip to content

valgrind-python.supp: Update suppression for readline leaks#151783

Merged
vstinner merged 2 commits into
python:mainfrom
StanFromIreland:readline-sup
Jun 24, 2026
Merged

valgrind-python.supp: Update suppression for readline leaks#151783
vstinner merged 2 commits into
python:mainfrom
StanFromIreland:readline-sup

Conversation

@StanFromIreland

Copy link
Copy Markdown
Member

These have been causing the AMD64 Arch Linux Valgrind 3.x Buildbot to fail, for example in this build:

Long log
==3029599== 
==3029599== HEAP SUMMARY:
==3029599==     in use at exit: 281,121 bytes in 601 blocks
==3029599==   total heap usage: 11,617,887 allocs, 11,617,286 frees, 20,425,116,089 bytes allocated
==3029599== 
==3029599== 8 bytes in 1 blocks are definitely lost in loss record 2 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x999D8B0: ???
==3029599==    by 0x999D987: ???
==3029599==    by 0x998A20D: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
}
==3029599== 10 bytes in 1 blocks are definitely lost in loss record 3 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x4A0A2CF: strdup (strdup.c:42)
==3029599==    by 0x99F09E3: ???
==3029599==    by 0x99F3D16: ???
==3029599==    by 0x9A05FED: ???
==3029599==    by 0x99FDB04: ???
==3029599==    by 0x99FDC97: ???
==3029599==    by 0x99FE1D5: ???
==3029599==    by 0x999F2D9: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   fun:strdup
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
}
==3029599== 13 bytes in 1 blocks are definitely lost in loss record 4 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x9990AF8: ???
==3029599==    by 0x998A215: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599==    by 0x243EA6: _PyVectorcall_Call (call.c:273)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
   fun:_PyVectorcall_Call
}
==3029599== 16 bytes in 1 blocks are definitely lost in loss record 5 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x998A30B: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599==    by 0x243EA6: _PyVectorcall_Call (call.c:273)
==3029599==    by 0x24411A: _PyObject_Call (call.c:348)
==3029599==    by 0x244152: PyObject_Call (call.c:373)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
   fun:_PyVectorcall_Call
   fun:_PyObject_Call
   fun:PyObject_Call
}
==3029599== 20 bytes in 1 blocks are definitely lost in loss record 6 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x998D954: ???
==3029599==    by 0x99906A0: ???
==3029599==    by 0x9990BA4: ???
==3029599==    by 0x998A215: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
}
==3029599== 22 bytes in 1 blocks are definitely lost in loss record 7 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99F368A: ???
==3029599==    by 0x99F3D01: ???
==3029599==    by 0x9A05FED: ???
==3029599==    by 0x99FDB04: ???
==3029599==    by 0x99FDC97: ???
==3029599==    by 0x99FE1D5: ???
==3029599==    by 0x999F2D9: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
}
==3029599== 101 (32 direct, 69 indirect) bytes in 1 blocks are definitely lost in loss record 26 of 88
==3029599==    at 0x484CC13: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99F38C4: ???
==3029599==    by 0x9A05FED: ???
==3029599==    by 0x99FDB04: ???
==3029599==    by 0x99FDC97: ???
==3029599==    by 0x99FE1D5: ???
==3029599==    by 0x999F2D9: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:calloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
}
==3029599== 256 bytes in 1 blocks are definitely lost in loss record 30 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x998A467: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599==    by 0x243EA6: _PyVectorcall_Call (call.c:273)
==3029599==    by 0x24411A: _PyObject_Call (call.c:348)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
   fun:_PyVectorcall_Call
   fun:_PyObject_Call
}
==3029599== 2,032 bytes in 1 blocks are definitely lost in loss record 56 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x999F55A: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599==    by 0x243EA6: _PyVectorcall_Call (call.c:273)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
   fun:_PyVectorcall_Call
}
==3029599== 3,808 (1,536 direct, 2,272 indirect) bytes in 1 blocks are definitely lost in loss record 64 of 88
==3029599==    at 0x484CE40: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A46D2: ???
==3029599==    by 0x997F465: ???
==3029599==    by 0x997F4C0: ???
==3029599==    by 0x998A207: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:realloc
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
}
==3029599== 4,016 bytes in 1 blocks are definitely lost in loss record 65 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x999CB1A: ???
==3029599==    by 0x996012F: setup_readline (readline.c:1363)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599==    by 0x243EA6: _PyVectorcall_Call (call.c:273)
==3029599==    by 0x24411A: _PyObject_Call (call.c:348)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
   fun:_PyVectorcall_Call
   fun:_PyObject_Call
}
==3029599== 4,080 bytes in 1 blocks are definitely lost in loss record 66 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x999F53A: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599==    by 0x243EA6: _PyVectorcall_Call (call.c:273)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
   fun:_PyVectorcall_Call
}
==3029599== 7,777 (760 direct, 7,017 indirect) bytes in 1 blocks are definitely lost in loss record 75 of 88
==3029599==    at 0x484CC13: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99FDC40: ???
==3029599==    by 0x99FE1D5: ???
==3029599==    by 0x999F2D9: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599==    by 0x29BF9C: cfunction_vectorcall_FASTCALL (methodobject.c:449)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:calloc
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
   fun:cfunction_vectorcall_FASTCALL
}
==3029599== 7,952 bytes in 1 blocks are definitely lost in loss record 76 of 88
==3029599==    at 0x484CC13: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99F0398: ???
==3029599==    by 0x99F234E: ???
==3029599==    by 0x99F5C52: ???
==3029599==    by 0x999F313: ???
==3029599==    by 0x998A1E9: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599==    by 0x3F3715: _imp_create_dynamic (import.c.h:489)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:calloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
   fun:_imp_create_dynamic
}
==3029599== 41,120 (4,112 direct, 37,008 indirect) bytes in 1 blocks are definitely lost in loss record 85 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x997D8F2: ???
==3029599==    by 0x997E7F8: ???
==3029599==    by 0x9989F0E: ???
==3029599==    by 0x9989FF6: ???
==3029599==    by 0x998A271: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
}
==3029599== 53,456 (4,112 direct, 49,344 indirect) bytes in 1 blocks are definitely lost in loss record 87 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x997D8F2: ???
==3029599==    by 0x997E7F8: ???
==3029599==    by 0x9989F0E: ???
==3029599==    by 0x9989FF6: ???
==3029599==    by 0x998A292: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
}
==3029599== 78,128 (12,336 direct, 65,792 indirect) bytes in 3 blocks are definitely lost in loss record 88 of 88
==3029599==    at 0x48457A8: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3029599==    by 0x99A3ADD: ???
==3029599==    by 0x997D8F2: ???
==3029599==    by 0x997E7F8: ???
==3029599==    by 0x9990917: ???
==3029599==    by 0x9990BA4: ???
==3029599==    by 0x998A215: ???
==3029599==    by 0x996032A: setup_readline (readline.c:1450)
==3029599==    by 0x9961872: PyInit_readline (readline.c:1689)
==3029599==    by 0x3F6F15: _PyImport_RunModInitFunc (importdl.c:436)
==3029599==    by 0x3F288F: import_run_extension (import.c:2170)
==3029599==    by 0x3F3683: _imp_create_dynamic_impl (import.c:5532)
==3029599== 
{
   <insert_a_suppression_name_here>
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:setup_readline
   fun:PyInit_readline
   fun:_PyImport_RunModInitFunc
   fun:import_run_extension
   fun:_imp_create_dynamic_impl
}
==3029599== LEAK SUMMARY:
==3029599==    definitely lost: 41,313 bytes in 19 blocks
==3029599==    indirectly lost: 161,502 bytes in 189 blocks
==3029599==      possibly lost: 26,993 bytes in 276 blocks
==3029599==    still reachable: 29 bytes in 1 blocks
==3029599==         suppressed: 51,284 bytes in 116 blocks
==3029599== Reachable blocks (those to which a pointer was found) are not shown.
==3029599== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==3029599== 
==3029599== For lists of detected and suppressed errors, rerun with: -s
==3029599== ERROR SUMMARY: 54 errors from 54 contexts (suppressed: 0 from 0)

The current suppression doesn't match because it's pinned to obj:/lib/libreadline.so.4.3, I suggest making it more general.

@StanFromIreland

Copy link
Copy Markdown
Member Author

!buildbot Valgrind

@bedevere-bot

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @StanFromIreland for commit 5cfd3df 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F151783%2Fmerge

The command will test the builders whose names match following regular expression: Valgrind

The builders matched are:

  • AMD64 Arch Linux Valgrind PR

@StanFromIreland StanFromIreland requested a review from vstinner June 20, 2026 11:27
@StanFromIreland

Copy link
Copy Markdown
Member Author

Fix confirmed by the buildbot run, the 17 reports are now suppressed. We have gone from:

ERROR SUMMARY: 54 errors from 54 contexts (suppressed: 0 from 0)

to:

ERROR SUMMARY: 37 errors from 37 contexts (suppressed: 17 from 17)

@vstinner

vstinner commented Jun 24, 2026

Copy link
Copy Markdown
Member

These have been causing the AMD64 Arch Linux Valgrind 3.x Buildbot to fail, for example in this build: (...)

The buildbot runs the command:

valgrind --leak-check=full --show-leak-kinds=definite --error-exitcode=10 --gen-suppressions=all --track-origins=yes --trace-children=no --suppressions=/buildbot/buildarea/3.x.pablogsal-arch-x86_64.valgrind/build/Misc/valgrind-python.supp ./python -m test test_grammar test_syntax test_tokenize test_fstring test_ast test_exceptions --timeout=6000

And Python is built with:

./configure --prefix '$(PWD)/target' --with-pydebug --with-valgrind --without-pymalloc

@vstinner

Copy link
Copy Markdown
Member

I can reproduce the issue on Fedora 44 using the command:

valgrind --log-file=valgrind.log --leak-check=full --show-leak-kinds=all --suppressions=Misc/valgrind-python.supp ./python -c 'import readline'

Example from valgrind.log:

==2044549== 8 bytes in 1 blocks are still reachable in loss record 1 of 71
==2044549==    at 0x4840AE6: malloc (vg_replace_malloc.c:447)
==2044549==    by 0x4A1DDFE: strdup (strdup.c:42)
==2044549==    by 0x13EB636C: set_attribute_9.isra.0 (trim_sgr0.c:119)
==2044549==    by 0x13EB65AB: _nc_trim_sgr0 (trim_sgr0.c:310)
==2044549==    by 0x13EB2766: tgetent_sp (lib_termcap.c:182)
==2044549==    by 0x13E6BE40: _rl_init_terminal_io (terminal.c:624)
==2044549==    by 0x13E54B36: readline_initialize_everything (readline.c:1316)
==2044549==    by 0x13E54B36: rl_initialize (readline.c:1215)
==2044549==    by 0x4864537: setup_readline (readline.c:1450)
==2044549==    by 0x4865A9A: PyInit_readline (readline.c:1689)
==2044549==    by 0x63E35F: _PyImport_RunModInitFunc (importdl.c:436)
==2044549==    by 0x63A191: import_run_extension (import.c:2167)
==2044549==    by 0x63AE0B: _imp_create_dynamic_impl (import.c:5529)

I built Python with: ./configure --with-pydebug --with-valgrind --without-pymalloc.

Comment thread Misc/valgrind-python.supp
Comment thread Misc/valgrind-python.supp Outdated

@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

@vstinner vstinner added needs backport to 3.13 bugs and security fixes needs backport to 3.14 bugs and security fixes needs backport to 3.15 pre-release feature fixes, bugs and security fixes labels Jun 24, 2026
@vstinner vstinner enabled auto-merge (squash) June 24, 2026 13:53
@vstinner vstinner merged commit 28b63d3 into python:main Jun 24, 2026
40 checks passed
@miss-islington-app

Copy link
Copy Markdown

Thanks @StanFromIreland for the PR, and @vstinner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15.
🐍🍒⛏🤖

@bedevere-app

bedevere-app Bot commented Jun 24, 2026

Copy link
Copy Markdown

GH-152084 is a backport of this pull request to the 3.15 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.15 pre-release feature fixes, bugs and security fixes label Jun 24, 2026
@bedevere-app

bedevere-app Bot commented Jun 24, 2026

Copy link
Copy Markdown

GH-152085 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.14 bugs and security fixes label Jun 24, 2026
@bedevere-app

bedevere-app Bot commented Jun 24, 2026

Copy link
Copy Markdown

GH-152086 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.13 bugs and security fixes label Jun 24, 2026
@StanFromIreland StanFromIreland deleted the readline-sup branch June 24, 2026 13:55
vstinner pushed a commit that referenced this pull request Jun 24, 2026
…H-151783) (#152084)

`valgrind-python.supp`: Update suppression for readline leaks (GH-151783)
(cherry picked from commit 28b63d3)

Co-authored-by: Stan Ulbrych <stan@python.org>
vstinner pushed a commit that referenced this pull request Jun 24, 2026
…H-151783) (#152086)

`valgrind-python.supp`: Update suppression for readline leaks (GH-151783)
(cherry picked from commit 28b63d3)

Co-authored-by: Stan Ulbrych <stan@python.org>
vstinner pushed a commit that referenced this pull request Jun 24, 2026
…H-151783) (#152085)

`valgrind-python.supp`: Update suppression for readline leaks (GH-151783)
(cherry picked from commit 28b63d3)

Co-authored-by: Stan Ulbrych <stan@python.org>
@vstinner

Copy link
Copy Markdown
Member

I merged your fix and backported it to stable branches. Thanks for the fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants