[Cython] test crash in Py3.2 (NumPy/memoryview/refcounting related?)

Stefan Behnel stefan_ml at behnel.de
Sun Apr 22 14:34:20 CEST 2012


mark florisson, 22.04.2012 13:54:
> On 22 April 2012 11:57, Stefan Behnel wrote:
>> I keep seeing test crashes in Py3.2 debug builds on Jenkins with the latest
>> master, referring to ref-counting problems. Here, for example:
>>
>> https://sage.math.washington.edu:8091/hudson/job/cython-devel-tests/BACKEND=c,PYVERSION=py32-ext/328/console
>>
>> and likewise in the series of builds starting at #312.
>>
>> I'm not sure what changed in that corner, it looks like one of those
>> problems that was there for a while and suddenly starts showing when you
>> touch that innocent looking brick at the other end of the house that was
>> holding the balance, until now. In this case, that brick was this commit:
>>
>> https://github.com/cython/cython/commit/c8f61a668d0ce8af1020f520253e1b5f623cf349
>>
>> I reverted it here and that fixed the problem at least temporarily:
>>
>> https://github.com/cython/cython/commit/5aac8caf1ba21933cc85a51af3319c78fc08d675
>>
>> but it seems to be back now (after my refnanny optimisations). Before
>> reverting my changes, I was able to reproduce it somewhat reliably on
>> sage.math by running these three tests together (non-forking):
>>
>>        memslice numpy_bufacc numpy_memoryview
>>
>> None of the tests shows the problem when run by itself. I can't tell if
>> it's also in the latest py3k because I don't have a NumPy lying around that
>> works there. So 3.2 is basically the latest Python version this can be
>> tested with, and it doesn't occur in the 3.1 tests. The tests use NumPy
>> 1.6.1, i.e. the latest official release.
>>
>> Mark, Dag, could any of you take a look to see if it appears in any way
>> more obvious to you than to me?
> 
> Hm, I think you can try to disable the numpy_memoryview test and just
> continue development as normal. numpy_memoryview has a testcase
> function which inserts the test into __test__, so you could just
> comment out that line.

... as long as we remember to put it back in ;)


> The test seems to fail before it runs though? Is it possible to obtain
> a backtrace?

When I reproduced it in the Jenking workspace, it crashed while trying to
clean up objects to free memory, specifically in the deallocation visitor
function of one of the memory views of numpy_memoryview (IIRC). That didn't
really tell me where that object was created or what happened to it to get
it to crash. Needs some more investigation.

Stefan


More information about the cython-devel mailing list