On Thursday 24 January 2008 17:07, Konstantin Serebryany wrote:
> I've made first (quick-and-dirty) implementation.
> The machine works as expected, at least on my set of tests.
Sounds good.
I see you changed the "Race if ..." condition in MSMProp1 from "LS={}"
to "LS={} and #SS > 1", yes?
I tried to summarise the MSMProp1 state machine, so as to get a
clearer idea of what behaviour it allows and does not allow. But
really I am guessing. Can you fix/refine this summary? You must
have some intuition of what the state machine allows/disallows.
J
* define a "synchronization event" as any of the following:
semaphore post-waits
condition variable signal-wait when the waiter blocks
thread creation
thread joinage
a barrier
* synchronisation events partition the execution of a threaded program
into a set of segments which have a partial ordering, called the
the "happens-before" ordering.
* a location may be read by a segment S, without a protecting lock,
only if all writes to it happened-before S
* a location may be written by a segment S, without a protecting
lock, only if all reads and all writes to it happened-before S
* a location may be read by a segment S, using a protecting lock, only
if all writes to it which are concurrent (not-happens-before) use
the same protecting lock
* a location may be read by a segment S, using a protecting lock,
only if all reads and all writes to it which are concurrent
(not happens-before) use the same protecting lock
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Valgrind-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-developers