[New-bugs-announce] [issue6673] Py3.1 hangs in coroutine and eats up all memory
Stefan Behnel
report at bugs.python.org
Sun Aug 9 16:09:45 CEST 2009
New submission from Stefan Behnel <scoder at users.sourceforge.net>:
Here's a simple coroutine that works perfectly in Python 2.6 but seems
to let Py3.1 enter an infinite loop that ends up eating all memory.
-----------------
def printing_sink():
"A simple sink that prints the received values."
while True:
print( (yield) )
def chunker(chunk_size, target):
"""Receives single items and forwards chunks of a fixed size.
Usage example:
>>> sink = printing_sink()
>>> next(sink)
>>> cr = chunker(4, sink)
>>> next(cr)
>>> for i in range(8):
... cr.send(i)
[0, 1, 2, 3]
[4, 5, 6, 7]
>>> cr.close()
"""
while True:
target.send([ (yield) for i in range(chunk_size) ])
if __name__ == '__main__':
import doctest
doctest.testmod()
-----------------
Fails on:
Python 3.1 (r31:73572, Jun 28 2009, 21:07:35)
[GCC 4.3.2] on linux2
Works on:
Python 2.6.2 (r262:71600, Apr 17 2009, 11:29:30)
[GCC 4.3.2] on linux2
The problem seems to be the list comprehension. When I replace it with a
normal for-loop, it works perfectly.
----------
components: Interpreter Core
messages: 91428
nosy: scoder
severity: normal
status: open
title: Py3.1 hangs in coroutine and eats up all memory
type: crash
versions: Python 3.1
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue6673>
_______________________________________
More information about the New-bugs-announce
mailing list