Author: Armin Rigo <ar...@tunes.org>
Branch: stm-thread-2
Changeset: r61486:372747b348cd
Date: 2013-02-20 09:22 +0100
http://bitbucket.org/pypy/pypy/changeset/372747b348cd/

Log:    Argh, forgot that count_reads can be much bigger than the limit if
        the transaction is atomic.

diff --git a/rpython/translator/stm/src_stm/et.c 
b/rpython/translator/stm/src_stm/et.c
--- a/rpython/translator/stm/src_stm/et.c
+++ b/rpython/translator/stm/src_stm/et.c
@@ -391,8 +391,12 @@
 
   /* upon abort, set the reads size limit to 94% of how much was read
      so far.  This should ensure that, assuming the retry does the same
-     thing, it will commit just before it reaches the conflicting point. */
+     thing, it will commit just before it reaches the conflicting point.
+     Note that we should never *increase* the read length limit here. */
   limit = d->count_reads;
+  if (limit > d->reads_size_limit_nonatomic) {  /* can occur if atomic */
+      limit = d->reads_size_limit_nonatomic;
+  }
   if (limit > 0) {
       limit -= (limit >> 4);
       d->reads_size_limit_nonatomic = limit;
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to