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.

Author xxm
Recipients xxm
Date 2021-11-22.02:24:41
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1637547882.55.0.126109992436.issue45860@roundup.psfhosted.org>
In-reply-to
Content
The following code can lead to a crash and report Illegal instruction (core dumped)(few times) or Trace/breakpoint trap (core dumped) (very few times) or Segmentation fault (core dumped) (most times) on Python 3.11. 

test_free_different_thread.py
========================================================
import inspect
import sys
import threading
import unittest
import weakref
import ctypes
from test.support import run_doctest, run_unittest, cpython_only, check_impl_detail
import _testcapi
from types import FunctionType
from test import test_code
import test_code

def test_free_different_thread():
    f = CoExtra.get_func()

    class ThreadTest(threading.Thread):

        def __init__(CoExtra, f, test):
            super().__init__()
            CoExtra.f = CoExtra
            CoExtra.test = test

        def run(CoExtra):
            del CoExtra.f
            CoExtra.test.assertEqual(test_code.LAST_FREED, 500)
    test_code.SetExtra(f.__code__, test_code.FREE_INDEX, ctypes.c_voidp(500))
    f = ThreadTest(CoExtra, f)
    del tt
    tt.start()
    tt.join()
    CoExtra.assertEqual(test_code.LAST_FREED, 500)
    
CoExtra = test_code.CoExtra()
test_free_different_thread()
=========================================================

-------------------------------------
Traceback (most recent call last):
  File "/home/xxm/Desktop/test_free_different_thread.py", line 33, in <module>
    test_free_different_thread()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xxm/Desktop/test_free_different_thread.py", line 28, in test_free_different_thread
    del tt
        ^^
UnboundLocalError: cannot access local variable 'tt' where it is not associated with a value
Illegal instruction (core dumped)/Trace/breakpoint trap (core dumped)/Segmentation fault (core dumped)
----------------------------------------------------------------

Version: python 3.9, python 3.10, python 3.11 on ubuntu 16.04

Reproduce step:
1.download test_code.py and place test_free_different_thread.py and test_code in a same directory.
2. run with "python test_free_different_thread.py"

The test_code.py is from cpython' test. We can also annotate "import test_code" and run test_free_different_thread.py directly. But it seems that Illegal instruction and Trace/breakpoint trap cannot be reproduced.
History
Date User Action Args
2021-11-22 02:24:42xxmsetrecipients: + xxm
2021-11-22 02:24:42xxmsetmessageid: <1637547882.55.0.126109992436.issue45860@roundup.psfhosted.org>
2021-11-22 02:24:42xxmlinkissue45860 messages
2021-11-22 02:24:42xxmcreate