Guido noticed this on Linux late this afternoon. I've seen it on Win2K and Win98SE since. test_gc fails if you run the whole test suite from the start: test test_gc failed -- test_list: actual 10, expected 1 This seems impossible (look at the test). It doesn't fail in isolation. It fails in both debug and release builds. Not *all* tests before test_gc need to be run in order to provoke a failure, but I can detect no sense in which do need to be run (not just one or two, but lots of them). Here are the files that changed between a Python that does work (yesterday) and now: P python/configure P python/configure.in P python/pyconfig.h.in P python/Doc/lib/libgetopt.tex P python/Doc/lib/libsocket.tex P python/Lib/copy.py P python/Lib/fileinput.py P python/Lib/getopt.py P python/Lib/posixpath.py P python/Lib/shutil.py P python/Lib/socket.py P python/Lib/compiler/pyassem.py P python/Lib/compiler/pycodegen.py P python/Lib/compiler/transformer.py P python/Lib/distutils/command/clean.py P python/Lib/test/test_b1.py P python/Lib/test/test_commands.py P python/Lib/test/test_descr.py P python/Lib/test/test_getopt.py P python/Lib/test/test_socket.py U python/Lib/test/test_timeout.py P python/Misc/ACKS P python/Misc/NEWS P python/Modules/gcmodule.c P python/Modules/socketmodule.c P python/Modules/socketmodule.h P python/Objects/abstract.c P python/Objects/complexobject.c P python/Objects/rangeobject.c P python/Tools/webchecker/webchecker.py While Jeremy did fiddle gcmodule.c, that isn't the cause. I changed the test like so: def test_list(): import sys l = [] l.append(l) gc.collect() del l gc.set_debug(gc.DEBUG_SAVEALL) n = gc.collect() print >> sys.stderr, '*' * 30, n, gc.garbage expect(n, 1, "list") Here's the list of garbage objects it found: [<class 'test_descr.mysuper'>, {'__dict__': <attribute '__dict__' of 'mysuper' objects>, '__module__': 'test_descr', '__weakref__': <member '__weakref__' of 'mysuper' objects>, '__doc__': None, '__init__': <function __init__ at 0x00CC00D8>}, (<class 'test_descr.mysuper'>, <type 'super'>, <type 'object'>), (<type 'super'>,), [[...]], <attribute '__dict__' of 'mysuper' objects>, <member '__weakref__' of 'mysuper' objects>, <function __init__ at 0x00CC00D8>, (<cell at 0x00CB4DB0: type object at 0x00768420>,), <cell at 0x00CB4DB0: type object at 0x00768420>] The recursive list: [[...]] is the only one expected here. Your turn <wink>.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4