Author: Remi Meier <[email protected]>
Branch: c8-new-page-handling
Changeset: r1397:6f4f5fff1904
Date: 2014-09-19 13:09 +0200
http://bitbucket.org/pypy/stmgc/changeset/6f4f5fff1904/
Log: fix future bug
diff --git a/c8/stm/core.c b/c8/stm/core.c
--- a/c8/stm/core.c
+++ b/c8/stm/core.c
@@ -365,9 +365,13 @@
uintptr_t page;
for (page = first_page; page <= end_page; page++) {
/* check if our page is private or we are the only shared-page holder
*/
+ if (get_page_status_in(my_segnum, page) == PAGE_NO_ACCESS) {
+ /* happens if there is a concurrent WB between us making the backup
+ and acquiring the locks */
+ volatile char *dummy = REAL_ADDRESS(STM_SEGMENT->segment_base,
page * 4096UL);
+ *dummy = *dummy; /* force segfault */
+ }
assert(get_page_status_in(my_segnum, page) != PAGE_NO_ACCESS);
- /* XXX: actually, it can be NO_ACCESS if somebody changed that after we
- copied from it */
if (get_page_status_in(my_segnum, page) == PAGE_PRIVATE)
continue;
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit