-
-
Notifications
You must be signed in to change notification settings - Fork 34.3k
Open
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
This is a sub-issue for #146102 and more information can be found here`.
When re-initializing a SyntaxError (by calling its __init__ method), it currently does not decref its prior values. This reproducer crashes with ASan:
e = SyntaxError("msg", ("file.py", 1, 2, "txt", 2, 3))
e.__init__("new_msg", ("new_file.py", 2, 3, "new_txt", 3, 4))ASan report
=================================================================
==576215==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 72 byte(s) in 1 object(s) allocated from:
#0 0x7fb60c520cb5 in malloc (/usr/lib/libasan.so.8+0x120cb5) (BuildId: 0b96d08695bbce2da9d4770c29ad2e72fb536f47)
#1 0x5600a9805972 in _PyMem_RawMalloc Objects/obmalloc.c:65
#2 0x5600a9804d63 in _PyMem_DebugRawAlloc Objects/obmalloc.c:3043
#3 0x5600a9804dc7 in _PyMem_DebugRawMalloc Objects/obmalloc.c:3076
#4 0x5600a9806748 in _PyMem_DebugMalloc Objects/obmalloc.c:3241
#5 0x5600a982ecf3 in PyObject_Malloc Objects/obmalloc.c:1649
#6 0x5600a98cdf45 in PyUnicode_New Objects/unicodeobject.c:1318
#7 0x5600a98d3471 in unicode_decode_utf8 Objects/unicodeobject.c:5273
#8 0x5600a98df566 in PyUnicode_DecodeUTF8Stateful Objects/unicodeobject.c:5381
#9 0x5600a96eeb3b in _PyPegen_decode_string Parser/string_parser.c:245
#10 0x5600a96ef0b0 in _PyPegen_parse_string Parser/string_parser.c:338
#11 0x5600a95ce09e in _PyPegen_constant_from_string Parser/action_helpers.c:1480
#12 0x5600a95e9b7a in string_rule Parser/parser.c:17349
#13 0x5600a963ed92 in _tmp_156_rule Parser/parser.c:37961
#14 0x5600a963f435 in _loop1_82_rule Parser/parser.c:33521
#15 0x5600a96486ab in strings_rule Parser/parser.c:17420
#16 0x5600a9605530 in atom_rule Parser/parser.c:15361
#17 0x5600a9607dce in primary_raw Parser/parser.c:14999
#18 0x5600a96083ed in primary_rule Parser/parser.c:14797
#19 0x5600a9608da2 in await_primary_rule Parser/parser.c:14751
#20 0x5600a960934c in power_rule Parser/parser.c:14627
#21 0x5600a960af00 in factor_rule Parser/parser.c:14577
#22 0x5600a960d6b4 in term_raw Parser/parser.c:14418
#23 0x5600a960dcd3 in term_rule Parser/parser.c:14161
#24 0x5600a960e9e5 in sum_raw Parser/parser.c:14114
#25 0x5600a960f037 in sum_rule Parser/parser.c:13993
#26 0x5600a9610687 in shift_expr_raw Parser/parser.c:13953
#27 0x5600a9610cd9 in shift_expr_rule Parser/parser.c:13813
#28 0x5600a9611502 in bitwise_and_raw Parser/parser.c:13773
#29 0x5600a9611b54 in bitwise_and_rule Parser/parser.c:13691
SUMMARY: AddressSanitizer: 72 byte(s) leaked in 1 allocation(s).
The fix is to call Py_XDECREF before replacing the entries in the SyntaxError object.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error