Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r102:5eaf6b65867f
Date: 2013-06-12 21:22 +0200
http://bitbucket.org/pypy/stmgc/changeset/5eaf6b65867f/

Log:    Fix the next issue

diff --git a/c4/et.c b/c4/et.c
--- a/c4/et.c
+++ b/c4/et.c
@@ -511,7 +511,18 @@
       v = ACCESS_ONCE(R->h_revision);
       if (!(v & 1))               // "is a pointer", i.e.
         {                         //   "has a more recent revision"
-          return 0;
+          if (R->h_tid & GCFLAG_PRIVATE_FROM_PROTECTED)
+            {
+              /* such an object R might be listed in list_of_read_objects
+                 before it was turned from protected to private */
+              continue;
+            }
+          else
+            {
+              fprintf(stderr, "validation failed: "
+                      "%p has a more recent revision\n", R);
+              return 0;
+            }
         }
       if (v >= LOCKED)            // locked
         {
@@ -524,7 +535,11 @@
           else
             {
               if (v != d->my_lock)         // not locked by me: conflict
-                return 0;
+                {
+                  fprintf(stderr, "validation failed: "
+                          "%p is locked by another thread\n", R);
+                  return 0;
+                }
             }
         }
     }
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to