[issue22104] test_asyncio unstable in refleak mode

2014-08-04 Thread Roundup Robot

Roundup Robot added the comment:

New changeset 9bca86812857 by Zachary Ware in branch '3.4':
Issue #22104: Don't hold a reference to the loaded TestSuite in runtest_inner
http://hg.python.org/cpython/rev/9bca86812857

New changeset 7bc53cf8b2df by Zachary Ware in branch 'default':
Closes #22104: Merge with 3.4
http://hg.python.org/cpython/rev/7bc53cf8b2df

--
nosy: +python-dev
resolution:  - fixed
stage: needs patch - resolved
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-30 Thread STINNER Victor

STINNER Victor added the comment:

It may be related to the issue #17911.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-30 Thread STINNER Victor

Changes by STINNER Victor victor.stin...@gmail.com:


--
components: +asyncio

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-30 Thread STINNER Victor

STINNER Victor added the comment:

 It may be related to the issue #17911.

I checked: it is. The strange reference count can be seen with a single test. 
Example:

$ ./python -m test -R 3:3: -m test_default_exc_handler_coro test_asyncio 
[1/1] test_asyncio
beginning 6 repetitions
123456
..
test_asyncio leaked [53, 53, -106] references, sum=0
test_asyncio leaked [15, 15, -30] memory blocks, sum=0
1 test failed:
test_asyncio

This test uses a coroutine which raises an exception. The exception is stored 
in a Task object. But the exception contains also a traceback which indirectly 
creates a reference cycle. For example, the zero_error_coro() coroutine of the 
test uses the free variable self.

It's very difficult to find all objects of a reference cycle. We can try to 
break some cycles, it's already done Task._step() which sets self to None, but 
it's a waste of time. IMO the correct fix is to not store frame objects in an 
exception: see the issue #17911.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-30 Thread Antoine Pitrou

Antoine Pitrou added the comment:

Le 30/07/2014 06:08, STINNER Victor a écrit :

 This test uses a coroutine which raises an exception. The exception
 is
stored in a Task object. But the exception contains also a traceback
which indirectly creates a reference cycle.

regrtest calls gc.collect().

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-30 Thread Zachary Ware

Zachary Ware added the comment:

I checked on my theory, and removing the extra reference to 'tests' from the 
runtest_inner scope fixes it for me:

$ python -m test -R 3:3: test_asyncio
Running Debug|Win32 interpreter...
[1/1] test_asyncio
beginning 6 repetitions
123456
..
1 test OK.

Here's the patch.

--
keywords: +patch
Added file: http://bugs.python.org/file36166/issue22104.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-29 Thread Antoine Pitrou

New submission from Antoine Pitrou:

test_asyncio doesn't give usable results when looking for refleaks:

$ ./python -m test -R 2:4 test_asyncio
[1/1] test_asyncio
beginning 6 repetitions
123456
..
test_asyncio leaked [212, -106, 265, -6360] references, sum=-5989
test_asyncio leaked [59, -29, 76, -1799] memory blocks, sum=-1693
1 test failed:
test_asyncio

--
components: Tests
messages: 224280
nosy: giampaolo.rodola, gvanrossum, haypo, pitrou, yselivanov
priority: normal
severity: normal
stage: needs patch
status: open
title: test_asyncio unstable in refleak mode
type: behavior
versions: Python 3.4, Python 3.5

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-29 Thread Guido van Rossum

Guido van Rossum added the comment:

Was this always so or did it recently start?  Victor has made a ton of changes.

Anyway, I imagine there may be some objects stuck in cycles and the collection 
may not happen until a random later time, and the tests do timing-specific 
stuff so the number of objects created and deleted varies per run.

Perhaps adding some well-aimed gc.collect() calls to some tearDown() methods 
would make this go away?

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22104] test_asyncio unstable in refleak mode

2014-07-29 Thread Zachary Ware

Zachary Ware added the comment:

I think I'm to blame for exposing this in 4f9f7e0fe1fd.  I have a theory on why 
that exposed it; I think regrtest is holding an extra reference to the 
TestSuite in runtest_inner since it is using a different branch now that 
test_asyncio doesn't have a test_main function.

--
nosy: +zach.ware

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22104
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com