hunting for reason of a failing test (rpython/memory/test/)

Hi, I'm working on an object pinning feature for incminimark right now. There is always one failing test (depending on the platform) in rpython/memory/test/test_incminimark_gc.py which I just can't solve. I'd appreciate any form of help. Even if it is just a "I may imagine that it is connected to X and Y" :-) Basic resources: - all my changes are in the following fork & branch: https://bitbucket.org/groggi/pypy/branch/gc-incminimark-pinning - my `gc-incminimark-pinning` branch is based on PyPy's `release-2.3.x` branch - pinning should work for "simple" objects, i.e. basically RPython strings. GC cards are not supported. More tests are needed of course. - I am "gregor_w" in #pypy, so feel free to ping me The following test results I get on the three major platforms running pytest on /rpython/memory/test: - Windows (Visual Studio 2013 native tools): http://paste.pound-python.org/show/LPw4eCHE1EsfFTykQkWA/ => failing test: test_print_leak - OS X (clang): http://paste.pound-python.org/show/l85sUl56UCMDVxu1vrSS/ => failing test: test_tagged_id - Ubuntu (gcc): http://paste.pound-python.org/show/oAYctWSzF3OpqLtlBlUX/ => failing tests: test_tagged_id I have no idea why on Windows I get an other test to fail and test_tagged_id passes. However, maybe this gives you a hint. I imagine that one of the following three reasons are responsible for the failing tests: 1.) I did some address calculations wrong inside incminimark. However, I'd expect to see way more failing tests in this case. 2.) My changes to get the GC transformation working with pin()/unpin() or the translation for the same two functions is wrong, so there is some error in rpython/memory/gctransform/framework.py, rpython/memory/gctransform/transform.py, rpython/rtyper/llinterp.py or rpython/rtyper/lltypesystem/lloperation.py. On the other hand I can translate PyPy with a PyPy binary containing my changes -- so this seems also somehow impossible?! 3.) It is some side effect as a result of the following changeset (llarena and lltype modification): https://bitbucket.org/groggi/pypy/commits/84898085a09814d1ec4f6b2b0d4202c7a9... I tried my best to check all three explanations and some more. However, I just can't see what is going wrong. What I observed (only on OS X right now): - changing `taggedpointers` to False solves the problem, i.e. test passes - splitting both `print` statements inside the `fn` function into six prints with only one parameter (`print a, b, c` -> `print a\n print b\n print c`) leads to an error while executing the `print x` - splitting the `print` statements again as before *and* setting `taggedpointers` to False leads to the same error as the original version of the test without modifications. After 13-15 work hours trying to solve the bug I'm just lost. I have the feeling that it is something stupid and/or simple but my lack of PyPy knowledge stops me from seeing it. Any help is very much appreciated. Cheers and thank you in advance, Gregor
participants (1)
-
Gregor Wegberg