From 20b8ade8ce6a46485bdb0ac4508293440e25db05 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sat, 3 May 2014 16:16:17 +0000 Subject: [PATCH] * added readbarriers as counterparts for the writebarriers (see "SMP BARRIER PAIRING" in https://www.kernel.org/doc/Documentation/memory-barriers.txt ), should fix sporadic crashes of the test git-svn-id: trunk@27726 - --- tests/test/theapthread.pp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/test/theapthread.pp b/tests/test/theapthread.pp index 9839929b75..1dde316e89 100644 --- a/tests/test/theapthread.pp +++ b/tests/test/theapthread.pp @@ -130,6 +130,10 @@ begin begin if ((pair.writeindex+1) mod fifolength) <> pair.readindex then begin + { counterpart for the writebarrier in the consumer: ensure that we see + the write to pair.fifo[pair.readindex] now that we've seen the write + to pair.readindex } + readbarrier; freemem(pair.fifo[pair.writeindex]); pair.fifo[pair.writeindex] := getmem(((pair.writeindex*17) mod 520)+8); writebarrier; @@ -167,6 +171,10 @@ begin begin if pair.readindex <> pair.writeindex then begin + { counterpart for the writebarrier in the producer: ensure that we see + the write to pair.fifo[pair.writeindex] now that we've seen the write + to pair.writeindex } + readbarrier; freemem(pair.fifo[pair.readindex]); pair.fifo[pair.readindex] := getmem(((pair.writeindex*17) mod 520)+8); writebarrier;