✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server366.web-hosting.com ​🇻​♯➤ 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 67.223.118.204 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.36
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/hc_python/lib/python3.12/site-packages/greenlet/tests//test_gc.py
import gc

import weakref

import greenlet


from . import TestCase
from .leakcheck import fails_leakcheck
# These only work with greenlet gc support
# which is no longer optional.
assert greenlet.GREENLET_USE_GC

class TestGC(TestCase):
    def test_dead_circular_ref(self):
        o = weakref.ref(greenlet.greenlet(greenlet.getcurrent).switch())
        gc.collect()
        if o() is not None:
            import sys
            print("O IS NOT NONE.", sys.getrefcount(o()))
        self.assertIsNone(o())
        self.assertFalse(gc.garbage, gc.garbage)

    def test_circular_greenlet(self):
        class circular_greenlet(greenlet.greenlet):
            self = None
        o = circular_greenlet()
        o.self = o
        o = weakref.ref(o)
        gc.collect()
        self.assertIsNone(o())
        self.assertFalse(gc.garbage, gc.garbage)

    def test_inactive_ref(self):
        class inactive_greenlet(greenlet.greenlet):
            def __init__(self):
                greenlet.greenlet.__init__(self, run=self.run)

            def run(self):
                pass
        o = inactive_greenlet()
        o = weakref.ref(o)
        gc.collect()
        self.assertIsNone(o())
        self.assertFalse(gc.garbage, gc.garbage)

    @fails_leakcheck
    def test_finalizer_crash(self):
        # This test is designed to crash when active greenlets
        # are made garbage collectable, until the underlying
        # problem is resolved. How does it work:
        # - order of object creation is important
        # - array is created first, so it is moved to unreachable first
        # - we create a cycle between a greenlet and this array
        # - we create an object that participates in gc, is only
        #   referenced by a greenlet, and would corrupt gc lists
        #   on destruction, the easiest is to use an object with
        #   a finalizer
        # - because array is the first object in unreachable it is
        #   cleared first, which causes all references to greenlet
        #   to disappear and causes greenlet to be destroyed, but since
        #   it is still live it causes a switch during gc, which causes
        #   an object with finalizer to be destroyed, which causes stack
        #   corruption and then a crash

        class object_with_finalizer(object):
            def __del__(self):
                pass
        array = []
        parent = greenlet.getcurrent()
        def greenlet_body():
            greenlet.getcurrent().object = object_with_finalizer()
            try:
                parent.switch()
            except greenlet.GreenletExit:
                print("Got greenlet exit!")
            finally:
                del greenlet.getcurrent().object
        g = greenlet.greenlet(greenlet_body)
        g.array = array
        array.append(g)
        g.switch()
        del array
        del g
        greenlet.getcurrent()
        gc.collect()


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
11 Jun 2026 5.00 AM
root / root
0755
__pycache__
--
11 Jun 2026 5.00 AM
root / root
0755
__init__.py
9.508 KB
11 Jun 2026 5.00 AM
root / root
0644
_test_extension.c
7.074 KB
11 Jun 2026 5.00 AM
root / root
0644
_test_extension.cpython-312-x86_64-linux-gnu.so
16.922 KB
11 Jun 2026 5.00 AM
root / root
0755
_test_extension_cpp.cpp
6.556 KB
11 Jun 2026 5.00 AM
root / root
0644
_test_extension_cpp.cpython-312-x86_64-linux-gnu.so
57.352 KB
11 Jun 2026 5.00 AM
root / root
0755
fail_clearing_run_switches.py
1.233 KB
11 Jun 2026 5.00 AM
root / root
0644
fail_cpp_exception.py
0.962 KB
11 Jun 2026 5.00 AM
root / root
0644
fail_initialstub_already_started.py
1.915 KB
11 Jun 2026 5.00 AM
root / root
0644
fail_slp_switch.py
0.512 KB
11 Jun 2026 5.00 AM
root / root
0644
fail_switch_three_greenlets.py
0.934 KB
11 Jun 2026 5.00 AM
root / root
0644
fail_switch_three_greenlets2.py
1.255 KB
11 Jun 2026 5.00 AM
root / root
0644
fail_switch_two_greenlets.py
0.798 KB
11 Jun 2026 5.00 AM
root / root
0644
leakcheck.py
12.317 KB
11 Jun 2026 5.00 AM
root / root
0644
test_contextvars.py
9.34 KB
11 Jun 2026 5.00 AM
root / root
0644
test_cpp.py
3.09 KB
11 Jun 2026 5.00 AM
root / root
0644
test_extension_interface.py
4.707 KB
11 Jun 2026 5.00 AM
root / root
0644
test_gc.py
2.854 KB
11 Jun 2026 5.00 AM
root / root
0644
test_generator.py
1.211 KB
11 Jun 2026 5.00 AM
root / root
0644
test_generator_nested.py
3.631 KB
11 Jun 2026 5.00 AM
root / root
0644
test_greenlet.py
49.312 KB
11 Jun 2026 5.00 AM
root / root
0644
test_greenlet_trash.py
8.173 KB
11 Jun 2026 5.00 AM
root / root
0644
test_interpreter_shutdown.py
32.29 KB
11 Jun 2026 5.00 AM
root / root
0644
test_leaks.py
18.791 KB
11 Jun 2026 5.00 AM
root / root
0644
test_stack_saved.py
0.436 KB
11 Jun 2026 5.00 AM
root / root
0644
test_throw.py
3.625 KB
11 Jun 2026 5.00 AM
root / root
0644
test_tracing.py
8.353 KB
11 Jun 2026 5.00 AM
root / root
0644
test_version.py
1.492 KB
11 Jun 2026 5.00 AM
root / root
0644
test_weakref.py
0.862 KB
11 Jun 2026 5.00 AM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF