[Neal] >> ... >> I'm concerned about the negative ref leak in test_contextlib. I >> wonder if this was a result of PJE's fix for generators?
[Tim] > I don't know, but if you do > > while 1: > test_contextlib.test_main() > gc.collect() > > under a debug build it eventually (> 500 iterations) crashes with > > Fatal Python error: deallocating None > ... OK, I fixed that (incorrect decref in gen_throw()). Neal, that should also repair test_contextlib's ref leak oddities. The reason you didn't see this before is that test_contextlib didn't actually run any tests until recently. Phillip, when eyeballing gen_dealloc(), I didn't understand two things: 1. Why doesn't if (gen->gi_frame->f_stacktop!=NULL) { check first to be sure that gen->gi_frame != Py_None? Is that impossible here for some reason? 2. It _looks_ like "gi_frame != NULL" is an (undocumented) invariant. Right? If so, Py_XDECREF(gen->gi_frame); sends a confusing message (because of the "X", implying that NULL is OK). Regardless, it would be good to add comments to genobject.h explaining the possible values gi_frame can hold. For example, what does it mean when gi_frame is Py_None? Can it ever be NULL? It's very hard to reverse- engineer invariants and "special value" intents from staring at code. Not to say that isn't fun ;-) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com