aboutsummaryrefslogtreecommitdiff
path: root/readline
diff options
context:
space:
mode:
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>2019-09-07 20:54:44 +0200
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>2019-09-09 23:50:37 +0200
commite4df087431f10f6d9079d8f0c78ad0414e814b92 (patch)
tree59bd44816253a1866118c853a5fad95871f7838c /readline
parent6715fe29ffcdbef026908fed62e993b238d04d77 (diff)
downloadgdb-e4df087431f10f6d9079d8f0c78ad0414e814b92.zip
gdb-e4df087431f10f6d9079d8f0c78ad0414e814b92.tar.gz
gdb-e4df087431f10f6d9079d8f0c78ad0414e814b92.tar.bz2
Fix leak detected in python.c initialization code.
Valgrind reports the below leak. Make the variable progname_copy static, so that Valgrind continues to find a pointer to the memory given to Python. Note that the comment in do_start_initialization and the Python documentation indicates that the progname given to Py_SetProgramName cannot be freed. However, in Python 3.7.4, Py_SetProgramName does: void Py_SetProgramName(const wchar_t *program_name) { ... PyMem_RawFree(_Py_path_config.program_name); _Py_path_config.program_name = _PyMem_RawWcsdup(program_name); So, it looks like 3.7.4 Python duplicates its argument, which explains the leak found by Valgrind. It looks better to respect the doc and not have GDB freeing the string given to Py_SetProgramName, and avoid the leak error by declaring the progname_copy static. This will work with Python versions that really use this string without duplicating it, and avoids a leak report for Python version that duplicates it. ==4023== 200 bytes in 1 blocks are definitely lost in loss record 4,545 of 7,116^M ==4023== at 0x4C29F33: malloc (vg_replace_malloc.c:307)^M ==4023== by 0x446D27: xmalloc (alloc.c:60)^M ==4023== by 0x657C77: do_start_initialization (python.c:1610)^M ==4023== by 0x657C77: _initialize_python() (python.c:1823)^M ==4023== by 0x75FE24: initialize_all_files() (init.c:231)^M ==4023== by 0x708A94: gdb_init(char*) (top.c:2242)^M ==4023== by 0x5E7460: captured_main_1 (main.c:857)^M ==4023== by 0x5E7460: captured_main (main.c:1161)^M ==4023== by 0x5E7460: gdb_main(captured_main_args*) (main.c:1186)^M ==4023== by 0x4122D4: main (gdb.c:32)^M gdb/ChangeLog 2019-09-09 Philippe Waroquiers <philippe.waroquiers@skynet.be> * python/python.c (do_start_initialization): Make progname_copy static, to avoid a leak report.
Diffstat (limited to 'readline')
0 files changed, 0 insertions, 0 deletions