Yaroslav Halchenko, 10.12.2012 14:55: > On Wed, 05 Dec 2012, Yaroslav Halchenko wrote: >> On Wed, 05 Dec 2012, mark florisson wrote: >>>> Thanks, I merged it. > >>> It'd be nice if you could add this as a testcase in the tests/run >>> directory as a "don't segfault" kind of test. > >> I would be happy to extend the test battery but my blunt attempt failed, >> i.e. the test doesn't cause the failure: > >> (git)novo:~deb/cython[remotes/upstream/master~1]git >> $> rm -rf ~/.pyxbld ; python-dbg ./runtests.py -v -v weakfail; cat >> tests/run/weakfail.pyx >> Python 2.7.3 (default, Sep 9 2012, 17:05:18) >> >> [GCC 4.7.1] > >> Running tests against Cython 0.18-pre >> 73895001642d4531d32cac5ad2499f4ed5f3b286 >> Backends: c,cpp > >> runTest (__main__.CythonRunTestCase) >> compiling (c) and running weakfail ... test_weakref (line 8) >> (weakfail.__test__) >> Doctest: weakfail.__test__.test_weakref (line 8) ... ok >> runTest (__main__.CythonRunTestCase) >> compiling (cpp) and running weakfail ... test_weakref (line 8) >> (weakfail.__test__) >> Doctest: weakfail.__test__.test_weakref (line 8) ... ok > >> ---------------------------------------------------------------------- >> Ran 4 tests in 2.015s > >> OK >> ALL DONE >> [193903 refs] >> import weakref > >> foo_dict = weakref.WeakValueDictionary() > >> cdef class Foo: >> cdef object __weakref__ > >> def test_weakref(key): >> """ >> >>> _ = test_weakref(48) >> """ >> obj = Foo() >> foo_dict[key] = obj >> return obj > > >> whenever if I do it manually then -- yeap: > >> (git)novo:~deb/cython[remotes/upstream/master~1]tests/run >> $> rm -rf ~/.pyxbld ; PYTHONPATH=../../ python-dbg -c 'import pyximport as >> pi; pi.install(); import weakfail; s=weakfail.test_weakref(42)' >> python-dbg: ../Modules/gcmodule.c:366: visit_decref: Assertion >> `gc->gc.gc_refs != 0' failed. >> [1] 5508 abort PYTHONPATH=../../ python-dbg -c > >> so how to make it 'effective'? > > no hints from the experts? ;)
Usually, running gc.collect() after this kind of test (i.e. as part of the doctest) is a good way to provoke a crash in time. Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel