You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test_tools leaks randomly references on x86 Gentoo Refleaks 3.6 and 3.x #75357
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2017-10-24.11:18:27.089>created_at=<Date2017-08-10.11:45:39.097>labels= ['3.7', 'tests']
title='test_tools leaks randomly references on x86 Gentoo Refleaks 3.6 and 3.x'updated_at=<Date2017-10-27.13:17:38.975>user='https://github.com/vstinner'
The "x86 Gentoo Refleaks 3.x" buildbot runs tests using -u-cpu to disable the cpu resource. The problem is that DirectoryTestCase.test_files() of Lib/test/test_tools/test_unparse.py uses random:
# Test limited subset of files unless the 'cpu' resource is specified.ifnottest.support.is_resource_enabled("cpu"):
names=random.sample(names, 10)
So when we run the same test 7 times, each run uses different data.
I see different options:
Reseed random using the same seed in dash_R() of regrtest
Always test all data in test_unparse.py: all files, or select a specific set of interesting files
The random issue is more generic than just test_unparse.py, and so it would be interesting to explore this path. Maybe the random issue explains why some other tests fail randomly.
libregrtest always seeds the random RNG using a seed displayed on the standard output. We should either reuse this seed, or create a new unique seed for each test file, and display it (to be able to reproduce tests).
Reseed random before running each test file can also helps to make tests more reproductible
changed the title [-]test_tools leaks randomly references on x86 Gentoo Refleaks 3.x[/-][+]test_tools leaks randomly references on x86 Gentoo Refleaks 3.6 and 3.x[/+]on Sep 13, 2017
My previous attempt, PR 3059, was a a very generic fix, but my bpo-31227 idea was rejected.
I proposed a new idea, PR 4102, which is restricted to this specific issue:
"test_unparse.DirectoryTestCase now stores the names sample to always
test the same files. It prevents false alarms when hunting reference
leaks."
Python 2.7 is not affected. Even if Python 2.7 has Demo/parser/test_unparse.py, this test is not part of the Python test suite, and it doesn't use random.sample(names, 10).
New changeset bb78898 by Serhiy Storchaka (Miss Islington (bot)) in branch '3.6': bpo-31174: Improve the code of test_tools.test_unparse. (GH-4146) (bpo-4148) bb78898
Activity
vstinner commentedon Aug 10, 2017
The "x86 Gentoo Refleaks 3.x" buildbot runs tests using -u-cpu to disable the cpu resource. The problem is that DirectoryTestCase.test_files() of Lib/test/test_tools/test_unparse.py uses random:
So when we run the same test 7 times, each run uses different data.
I see different options:
The random issue is more generic than just test_unparse.py, and so it would be interesting to explore this path. Maybe the random issue explains why some other tests fail randomly.
libregrtest always seeds the random RNG using a seed displayed on the standard output. We should either reuse this seed, or create a new unique seed for each test file, and display it (to be able to reproduce tests).
Reseed random before running each test file can also helps to make tests more reproductible
--
http://buildbot.python.org/all/builders/x86%20Gentoo%20Refleaks%203.x/builds/52/steps/test/logs/stdio
test_tools leaked [1, 4, 2] memory blocks, sum=7
(...)
Re-running test 'test_tools' in verbose mode
(...)
test_tools leaked [1, 2, 2] memory blocks, sum=5
(...)
1 test failed again:
test_tools
vstinner commentedon Aug 17, 2017
I created bpo-31227: "regrtest: reseed random with the same seed before running a test file".
vstinner commentedon Sep 13, 2017
test_tools also fails on x86 Gentoo Refleaks 3.6:
http://buildbot.python.org/all/builders/x86%20Gentoo%20Refleaks%203.6/builds/90
test_tools leaked [1, 1, 118] memory blocks, sum=120
(...)
test_tools leaked [7, 1, 6] memory blocks, sum=14
[-]test_tools leaks randomly references on x86 Gentoo Refleaks 3.x[/-][+]test_tools leaks randomly references on x86 Gentoo Refleaks 3.6 and 3.x[/+]vstinner commentedon Oct 24, 2017
"test_tools leaked (...)" still occurs randomly on 3.6 and 3.x Gentoo buildbot.
vstinner commentedon Oct 24, 2017
My previous attempt, PR 3059, was a a very generic fix, but my bpo-31227 idea was rejected.
I proposed a new idea, PR 4102, which is restricted to this specific issue:
"test_unparse.DirectoryTestCase now stores the names sample to always
test the same files. It prevents false alarms when hunting reference
leaks."
vstinner commentedon Oct 24, 2017
New changeset 8e482be by Victor Stinner in branch 'master':
bpo-31174: Fix test_tools.test_unparse (bpo-4102)
8e482be
vstinner commentedon Oct 24, 2017
Python 2.7 is not affected. Even if Python 2.7 has Demo/parser/test_unparse.py, this test is not part of the Python test suite, and it doesn't use random.sample(names, 10).
vstinner commentedon Oct 24, 2017
New changeset d8f78a1 by Victor Stinner (Miss Islington (bot)) in branch '3.6':
bpo-31174: Fix test_tools.test_unparse (GH-4102) (bpo-4104)
d8f78a1
vstinner commentedon Oct 24, 2017
The bug should now be fixed.
serhiy-storchaka commentedon Oct 27, 2017
New changeset 7351f9e by Serhiy Storchaka in branch 'master':
bpo-31174: Improve the code of test_tools.test_unparse. (bpo-4146)
7351f9e
serhiy-storchaka commentedon Oct 27, 2017
New changeset bb78898 by Serhiy Storchaka (Miss Islington (bot)) in branch '3.6':
bpo-31174: Improve the code of test_tools.test_unparse. (GH-4146) (bpo-4148)
bb78898