This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Dict creation in recursive function cause interpreter crashes.
Type: crash Stage: resolved
Components: Interpreter Core Versions: Python 3.9
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: CharlesFengY, iritkatriel
Priority: normal Keywords:

Created on 2021-02-10 09:19 by CharlesFengY, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Messages (2)
msg386765 - (view) Author: Yang Feng (CharlesFengY) Date: 2021-02-10 09:19
In the following programs, dict is created in recursive calls. Then a core dump is reported by Python interpreter.
+++++++++++++++++++++++++++++++++++++++++++
def test_equal_operator_modifying_operand():

    class X():

        def __del__(DictTest):
            dict_b.clear()

        def __eq__(DictTest, other):
            dict_a.clear()
            return True

        def __hash__(DictTest):
            return 13
    dict_d = {X(): 0}

    class Y():

        def __eq__(DictTest, other):
            dict_d.clear()
            return True
    dict_d = {0: Y()}
    # dict_c = {0: set()}
    test_equal_operator_modifying_operand()

test_equal_operator_modifying_operand()
+++++++++++++++++++++++++++++++++++++++++
msg401331 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-09-07 19:20
On 3.9 I reproduce the segfault.

On 3.11 on a mac I get 

RecursionError: maximum recursion depth exceeded while calling a Python object


So it has been fixed in the meantime.
History
Date User Action Args
2022-04-11 14:59:41adminsetgithub: 87353
2021-09-07 19:20:32iritkatrielsetstatus: open -> closed

nosy: + iritkatriel
messages: + msg401331

resolution: out of date
stage: resolved
2021-02-10 09:19:35CharlesFengYcreate