mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Update notes to address cyclic garbage and what should happen when a test is fixed.
This commit is contained in:
parent
615461603c
commit
03f3be50af
1 changed files with 13 additions and 0 deletions
|
@ -5,6 +5,15 @@ the interpreter was built in debug mode. If the total ref count
|
||||||
doesn't increase, the bug has been fixed and the file should be removed
|
doesn't increase, the bug has been fixed and the file should be removed
|
||||||
from the repository.
|
from the repository.
|
||||||
|
|
||||||
|
Note: be careful to check for cyclic garbage. Sometimes it may be helpful
|
||||||
|
to define the leak function like:
|
||||||
|
|
||||||
|
def leak():
|
||||||
|
def inner_leak():
|
||||||
|
# this is the function that leaks, but also creates cycles
|
||||||
|
inner_leak()
|
||||||
|
gc.collect() ; gc.collect() ; gc.collect()
|
||||||
|
|
||||||
Here's an example interpreter session for test_gestalt which still leaks:
|
Here's an example interpreter session for test_gestalt which still leaks:
|
||||||
|
|
||||||
>>> from test.leakers.test_gestalt import leak
|
>>> from test.leakers.test_gestalt import leak
|
||||||
|
@ -17,3 +26,7 @@ Here's an example interpreter session for test_gestalt which still leaks:
|
||||||
[28940 refs]
|
[28940 refs]
|
||||||
>>>
|
>>>
|
||||||
|
|
||||||
|
Once the leak is fixed, the test case should be moved into an appropriate
|
||||||
|
test (even if it was originally from the test suite). This ensures the
|
||||||
|
regression doesn't happen again. And if it does, it should be easier
|
||||||
|
to track down.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue