Author: Armin Rigo <[email protected]>
Branch: c5
Changeset: r567:57a9caca7c44
Date: 2013-12-19 15:21 +0100
http://bitbucket.org/pypy/stmgc/changeset/57a9caca7c44/

Log:    Bah, fix

diff --git a/c5/core.c b/c5/core.c
--- a/c5/core.c
+++ b/c5/core.c
@@ -502,12 +502,15 @@
         char *next, *page_limit = (char *)cur;
         page_limit += 4096 - (((uintptr_t)page_limit) & 4095);
         next = (char *)(cur + 1) + 8 * cur->nb_updates;
-        if (page_limit - next >= sizeof(struct write_history_s) + 8)
+        if (page_limit - next < sizeof(struct write_history_s) + 8)
+            cur = NULL;
+        else
             cur = (struct write_history_s *)next;
     }
     if (cur == NULL) {
         cur = _reserve_page_write_history();
     }
+    assert(cur != d->most_recent_committed_transaction);
     cur->previous_older_transaction = NULL;
     cur->transaction_version = stm_transaction_version;
     cur->nb_updates = 0;
@@ -553,6 +556,7 @@
             else
                 continue;   /* retry from the start of the loop */
         }
+        assert(cur_head == stm_local.writes_by_this_transaction);
         cur_tail->previous_older_transaction = hist;
         if (__sync_bool_compare_and_swap(&d->most_recent_committed_transaction,
                                          hist, cur_head))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to