Commit Graph

67 Commits

Author SHA1 Message Date
Michael Walker
05e2d2f1e4 Fix issue with identifying only-read STM transactions as only creating new CTVars. 2015-07-08 18:18:56 +01:00
Michael Walker
8794276a3e Add a Show instance for SCTTrees 2015-07-08 18:17:48 +01:00
Michael Walker
df69f4778c Improve error reporting in alwaysTrue2 (less zealous about short-circuiting 2015-06-24 15:59:54 +01:00
Michael Walker
8944ea97a5 Use schedule bounding as the primary SCT approach.
This allows results to be naturally reported as lazy trees, rather
than as lists representing a tree traversal. This in turn means
that the actual bound can be moved outwards to the testing code, and
not used at all in the runner. Trees let us do nice things with
shrinking and short-circuiting, if we make the (fairly reasonable)
assumption that the children of a buggy result will exhibit the same
bug.

Storing results as trees does complicate the predicate helper
functions somewhat, but I think the clarity gained in the actual
SCT code is well worth it.
2015-06-19 16:50:51 +01:00
Michael Walker
a93f8202e4 Add dejafus/dejafusIO variants to take a pre-emption bound 2015-05-26 04:14:10 +01:00
Michael Walker
192777c2c9 STMLike type synonyms to shrink type sigs 2015-05-09 19:56:54 +01:00
Michael Walker
fa92d4a050 Don't pre-empt STM transactions which only allocate new variables 2015-03-10 14:18:50 +00:00
Michael Walker
f95ab4122a Report 2 capabilities for test runners, not 4.
The literature sttes that many bugs are found with 2 concurrent
threads, so encouraging even more parallelism is possibly a win in
only a small number of cases, but potentially a huge cost in many.
2015-02-27 21:01:10 +00:00
Michael Walker
3d0a82d915 Lie and return 4 for getNumCapabilities in DejaFu 2015-02-27 01:32:37 +00:00
Michael Walker
6c4015c314 Avoid re-running tests in dejafus. Closes #12. 2015-02-26 21:57:55 +00:00
Michael Walker
9aea975304 Only check runnable threads in isLocked 2015-02-23 18:39:41 +00:00
Michael Walker
14b08ff026 Un-break detection of global deadlock 2015-02-23 18:23:58 +00:00
Michael Walker
4a69fde83e Enable detection of nonglobal deadlock when every thread is in a fully-known state. Closes #9. 2015-02-23 17:58:12 +00:00
Michael Walker
f626e79553 Implement the new primitives in stepThread 2015-02-23 17:32:08 +00:00
Michael Walker
b8ff9a77f5 Add primitives for the new testing functions 2015-02-23 17:27:26 +00:00
Michael Walker
e72b84c613 Add an internal STM module 2015-02-23 17:24:02 +00:00
Michael Walker
0e3ba970bd Make CRefs interesting 2015-02-20 18:49:19 +00:00
Michael Walker
0ea2930862 Implement CRefs in stepThread 2015-02-20 16:24:21 +00:00
Michael Walker
a4a291368d Add primitives for CRefs 2015-02-20 16:14:50 +00:00
Michael Walker
0dba84f9a8 Add forkOn and getNumCapabilities 2015-02-18 00:13:12 +00:00
Michael Walker
9609823dd5 Add exception checking to autocheck 2015-02-17 11:22:17 +00:00
Michael Walker
998fdeb833 Update the deadlocks* predicates to handle STMDeadlock, and add exceptions* predicates 2015-02-17 05:58:25 +00:00
Michael Walker
22a15dfe95 Resolve all name conflicts with Prelude.catch in base-4.5 2015-02-16 03:47:14 +00:00
Michael Walker
ab6e411c38 Tidy up Deterministic.Internal 2015-02-16 03:16:55 +00:00
Michael Walker
f41a39e490 Add ImpredicativeTypes everywhere to make mask (grr, exceptions) work with GHC 7.8.4 2015-02-16 02:50:52 +00:00
Michael Walker
ad98bb6d90 Fix a => typo (why did that ever compile and run!?) 2015-02-16 02:50:20 +00:00
Michael Walker
7409bc67cd Re-export MaskingState from Deterministic 2015-02-14 21:24:41 +00:00
Michael Walker
99dd56adfe Implement forkWithUnmask 2015-02-14 21:16:44 +00:00
Michael Walker
abc31aa165 Have throwTo get blocked on mask state 2015-02-14 21:01:33 +00:00
Michael Walker
8af7b814c2 Consider masking changes interesting for SCT 2015-02-14 18:59:11 +00:00
Michael Walker
f75db99713 Implement AMasking and AResetMask (but don't yet consider masking in throwTo!) 2015-02-14 18:54:43 +00:00
Michael Walker
5dc8476cac Threads inherit the masking state of their parent 2015-02-14 16:05:16 +00:00
Michael Walker
3a4c58b4ee Turn threads into records 2015-02-14 16:02:07 +00:00
Michael Walker
8f4007ed59 Add a AResetMasking action 2015-02-14 15:47:48 +00:00
Michael Walker
825b135dc1 Add AMasking primitive 2015-02-13 18:30:21 +00:00
Michael Walker
f18209f2e0 Make MonadMask a requirement for MonadConc 2015-02-13 17:47:04 +00:00
Michael Walker
8faee29b27 Implement throwTo and killThread 2015-02-13 17:13:00 +00:00
Michael Walker
2a79b78901 Pop exception handlers off the stack when leaving their scope 2015-02-13 14:06:52 +00:00
Michael Walker
ad216bd3a9 hlint fixes 2015-02-13 00:56:45 +00:00
Michael Walker
cf1c6ebece Available ThreadIds. Closes #3 2015-02-13 00:55:05 +00:00
Michael Walker
97611ff5b5 Implement catching exceptions 2015-02-13 00:50:58 +00:00
Michael Walker
9bd781c697 Primitive for throwing exceptions 2015-02-13 00:46:48 +00:00
Michael Walker
5ce63d0d50 Use MonadThrow/MonadCatch for MonadConc exceptions 2015-02-13 00:46:14 +00:00
Michael Walker
ef580d66e8 Use MonadThrow/MonadCatch for MonadSTM exceptions 2015-02-13 00:46:13 +00:00
Michael Walker
9b0cd6ffd3 doTransaction already calls undo on retry/exception 2015-02-13 00:46:12 +00:00
Michael Walker
a305354b65 Add STM exceptions 2015-02-13 00:46:11 +00:00
Michael Walker
7b7c765494 Add a central manager for unique ID types 2015-02-10 18:26:22 +00:00
Michael Walker
d5e4f94a08 Include the CTVarIds of created CTVars in STM Success output 2015-02-10 11:16:36 +00:00
Michael Walker
f7b7539445 Remove logic duplication in Deterministic.Internal 2015-02-10 02:09:51 +00:00
Michael Walker
a54925df4b Move CVar IDs out of the Ref in Deterministic 2015-02-10 01:20:04 +00:00