Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r287:03917cbbc4f7 Date: 2013-06-26 18:06 +0200 http://bitbucket.org/pypy/stmgc/changeset/03917cbbc4f7/
Log: Fix again (or attempt to) this case... diff --git a/c4/et.c b/c4/et.c --- a/c4/et.c +++ b/c4/et.c @@ -652,10 +652,18 @@ { /* such an object R might be listed in list_of_read_objects before it was turned from protected to private */ - if(((gcptr)v)->h_tid & GCFLAG_BACKUP_COPY) - continue; - /* the backup was stolen */ - return 0; + if (((gcptr)v)->h_tid & GCFLAG_PUBLIC) + { + /* The backup was stolen, but maybe not modified + afterwards. Check it. */ + R = (gcptr)v; + goto retry; + } + else + { + /* The backup was not stolen, everything's fine */ + continue; + } } else if ((R->h_tid & (GCFLAG_PUBLIC | GCFLAG_NURSERY_MOVED)) == (GCFLAG_PUBLIC | GCFLAG_NURSERY_MOVED)) diff --git a/c4/test/test_random.py b/c4/test/test_random.py --- a/c4/test/test_random.py +++ b/c4/test/test_random.py @@ -523,4 +523,4 @@ def test_more_multi_thread(): py.test.skip("more random tests") for i in range(200): - yield test_multi_thread, 1858 + i + yield test_multi_thread, 1742/2 + i _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit