[pypy-dev] Tracked it a bit down Re: GC problems with PyObject

Christian Tismer tismer at stackless.com
Fri Mar 24 01:44:16 CET 2006


Christian Tismer wrote:
> Michael Hudson wrote:
> 
>> What doesn't work?  I changed NEED_OLD_EXTRA_REFS to False and the c
>> tests still run fine.

see test_genc:

# this test crashes after 30 runs on my XP machine
def test_refcount_pyobj():
     def prob_with_pyobj(a=int, b=int):
         return 2, 3, long(42)

     f = compile(prob_with_pyobj, [int, int])
     ret = f(2, 3)
     for i in xrange(1000):
         print i
         f(2, 3)

What happens is this:
the function itself seems to be fine.
But the generated wrapper function, which has to
convert from (int, int, obj) to (obj, obj, obj)
does not incref the long 42 before putting it into the
result tuple.

cheers - chris

-- 
Christian Tismer             :^)   <mailto:tismer at stackless.com>
tismerysoft GmbH             :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9A     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 802 86 56  mobile +49 173 24 18 776  fax +49 30 80 90 57 05
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/



More information about the Pypy-dev mailing list