Author: Armin Rigo <[email protected]>
Branch: marker
Changeset: r1194:937201ff1335
Date: 2014-05-02 17:46 +0200
http://bitbucket.org/pypy/stmgc/changeset/937201ff1335/
Log: More symmetrically, put <read at unknown location> also in the
"other" field when reporting a contention where "self" writes and
"other" reads.
diff --git a/c7/stm/marker.c b/c7/stm/marker.c
--- a/c7/stm/marker.c
+++ b/c7/stm/marker.c
@@ -165,32 +165,27 @@
/* For some categories, we can also collect the relevant information
for the other segment. */
+ char *outmarker = abort_other ? other_pseg->marker_self
+ : my_pseg->marker_other;
switch (kind) {
case WRITE_WRITE_CONTENTION:
marker_fetch_obj_write(other_segment_num, obj, other_marker);
+ marker_expand(other_marker, other_segment_base, outmarker);
break;
case INEVITABLE_CONTENTION:
assert(abort_other == false);
other_marker[0] = other_pseg->marker_inev[0];
other_marker[1] = other_pseg->marker_inev[1];
+ marker_expand(other_marker, other_segment_base, outmarker);
break;
+ case WRITE_READ_CONTENTION:
+ strcpy(outmarker, "<read at unknown location>");
+ break;
default:
- other_marker[0] = 0;
- other_marker[1] = 0;
+ outmarker[0] = 0;
break;
}
- marker_expand(other_marker, other_segment_base,
- abort_other ? other_pseg->marker_self
- : my_pseg->marker_other);
-
- if (abort_other && other_pseg->marker_self[0] == 0) {
- if (kind == WRITE_READ_CONTENTION)
- strcpy(other_pseg->marker_self, "<read at unknown location>");
- else
- strcpy(other_pseg->marker_self, "<no location information>");
- }
-
release_marker_lock(other_segment_base);
}
diff --git a/c7/test/test_marker.py b/c7/test/test_marker.py
--- a/c7/test/test_marker.py
+++ b/c7/test/test_marker.py
@@ -260,7 +260,8 @@
tl = self.get_stm_thread_local()
assert tl.longest_marker_state == lib.STM_TIME_RUN_ABORTED_WRITE_READ
assert ffi.string(tl.longest_marker_self) == '19'
- assert ffi.string(tl.longest_marker_other) == ''
+ assert ffi.string(tl.longest_marker_other) == (
+ '<read at unknown location>')
def test_double_remote_markers_cb_write_write(self):
@ffi.callback("void(char *, uintptr_t, object_t *, char *, size_t)")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit