New submission from Stefan Behnel <sco...@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 <rep...@bugs.python.org> <http://bugs.python.org/issue6673> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com