Brian Norris [Fri, 31 May 2013 22:37:30 +0000 (15:37 -0700)]
README: add LICENSE note
Brian Norris [Fri, 31 May 2013 22:32:39 +0000 (15:32 -0700)]
README: improve sections, provide better intro
Brian Norris [Wed, 29 May 2013 02:03:14 +0000 (19:03 -0700)]
Merge remote-tracking branch 'origin/master'
Brian Norris [Wed, 29 May 2013 02:01:52 +0000 (19:01 -0700)]
README: add a few sections
Brian Norris [Wed, 29 May 2013 01:32:19 +0000 (18:32 -0700)]
execution: reformat execution traces
The execution printouts were getting too wide and weren't too easy to
read. This improves the situation marginally.
Brian Norris [Wed, 29 May 2013 01:07:35 +0000 (18:07 -0700)]
README: update help text
Brian Norris [Wed, 29 May 2013 01:05:00 +0000 (18:05 -0700)]
main: 'plug ins' -> 'plugins'
Brian Norris [Wed, 29 May 2013 00:59:58 +0000 (17:59 -0700)]
tests: Makefile: add dependency information
Now tests will be re-compiled whenever their include files are modified.
Brian Norris [Wed, 29 May 2013 00:31:44 +0000 (17:31 -0700)]
Makefile: remove more deferred variables
Brian Norris [Wed, 29 May 2013 00:01:47 +0000 (17:01 -0700)]
tests: Makefile: eliminate (some) recursive make
Brian Norris [Wed, 8 May 2013 17:09:52 +0000 (10:09 -0700)]
execution: bugfix - resolved promises should propagate synchronization
A new write ModelAction may resolve a Promise, completing a release
sequence and updating the read's clock vector. This update should be
propagated to any ModelAction later in the execution order which had
previously "happened after" the read.
Brian Norris [Wed, 8 May 2013 17:05:44 +0000 (10:05 -0700)]
execution: refactor common CV propagation into its own function
There are a few occasions where we want to "fixup" a series of clock
vectors after establishing lazy synchronization (and one place where we
currently have a bug). Refactor this out to its own function so I can
reuse it elsewhere.
Brian Demsky [Mon, 6 May 2013 23:32:41 +0000 (16:32 -0700)]
typos
Brian Demsky [Mon, 6 May 2013 23:28:44 +0000 (16:28 -0700)]
print some stats in SC Analysis
Brian Demsky [Mon, 6 May 2013 20:25:00 +0000 (13:25 -0700)]
document and extend trace analysis interface
Brian Demsky [Mon, 6 May 2013 20:06:53 +0000 (13:06 -0700)]
cleanup plugin interface a little more.
add support for options for SCAnalysis
Brian Demsky [Mon, 6 May 2013 10:05:50 +0000 (03:05 -0700)]
add support for analysis with options
Brian Demsky [Mon, 6 May 2013 09:50:49 +0000 (02:50 -0700)]
add traceanalysis support
Brian Norris [Fri, 3 May 2013 16:51:20 +0000 (09:51 -0700)]
Merge demsky's SC analysis fixup
Brian Demsky [Fri, 26 Apr 2013 23:50:30 +0000 (16:50 -0700)]
scanalysis: don't rely on greedy search
Fix infrastructure to use search in cases where a greedy search is not
sufficient.
Brian Norris [Fri, 26 Apr 2013 22:37:36 +0000 (15:37 -0700)]
scanalysis: fixup spacing
Brian Norris [Fri, 26 Apr 2013 22:29:26 +0000 (15:29 -0700)]
test: sctest: fix warnings
Perhaps we wanted to print these variables? Anyway, just make them
global, so the warnings will go away:
gcc -o sctest.o sctest.c -Wall -g -O3 -I.. -I../include -L.. -lmodel
sctest.c: In function ‘b’:
sctest.c:20:6: warning: unused variable ‘r1’ [-Wunused-variable]
sctest.c: In function ‘c’:
sctest.c:26:6: warning: unused variable ‘r2’ [-Wunused-variable]
sctest.c: In function ‘d’:
sctest.c:33:6: warning: unused variable ‘r3’ [-Wunused-variable]
Brian Demsky [Fri, 26 Apr 2013 20:46:35 +0000 (13:46 -0700)]
Fix bug that prevents graph generation from compiling.
Check in test case that shows theorem that I've been trying to prove for 2 days is in fact not true (and thus difficult to prove).
Brian Norris [Wed, 24 Apr 2013 17:28:34 +0000 (10:28 -0700)]
action: improve "unintialized load" bug print
Brian Norris [Wed, 24 Apr 2013 17:11:16 +0000 (10:11 -0700)]
action: add get_{type,mo}_str() accessors
The big switch/case statements can be shortened and separated into their
own functions.
Brian Norris [Tue, 23 Apr 2013 01:43:20 +0000 (18:43 -0700)]
Merge remote-tracking branch 'private/master'
Brian Norris [Tue, 23 Apr 2013 01:42:51 +0000 (18:42 -0700)]
README: update text
Brian Demsky [Tue, 23 Apr 2013 00:19:25 +0000 (17:19 -0700)]
bug...will sometimes print SC traces in a bad order
Brian Demsky [Mon, 22 Apr 2013 23:00:56 +0000 (16:00 -0700)]
cleanup printing
Brian Demsky [Mon, 22 Apr 2013 22:59:22 +0000 (15:59 -0700)]
Rework how we present non-SC traces...previous presentation didn't make reasons clear.
Brian Norris [Fri, 19 Apr 2013 22:21:07 +0000 (15:21 -0700)]
snapshot-interface: bugfix - terminate string from readlink()
readlink() doesn't terminate the string for us, so our string doesn't
match properly (it will have a little extra garbage at the end).
Brian Norris [Fri, 19 Apr 2013 22:20:18 +0000 (15:20 -0700)]
snapshot: debugging - show the snapshot regions that are added
Brian Norris [Fri, 19 Apr 2013 21:47:35 +0000 (14:47 -0700)]
snapshot-interface: don't snapshot libmodel.so
We don't need to snapshot our own globals; we are careful to only place
constant pointers in global memory.
Brian Norris [Fri, 19 Apr 2013 21:42:05 +0000 (14:42 -0700)]
snapshot: use perror()
Brian Norris [Wed, 17 Apr 2013 19:42:14 +0000 (12:42 -0700)]
main: support long options, improve help message
Brian Norris [Fri, 19 Apr 2013 21:32:51 +0000 (14:32 -0700)]
execution: improve documentation
is_yieldblocked() wasn't documented
check_action_enabled() had incorrect documentation, since I removed the
waiter lists
Brian Norris [Fri, 19 Apr 2013 21:29:29 +0000 (14:29 -0700)]
execution: improve yield-blocking structure
We should just check the yieldblock parameter within
ModelExecution::is_yieldblock().
Brian Norris [Thu, 18 Apr 2013 02:10:47 +0000 (19:10 -0700)]
TMP: improve debugging, remove print_trace()
Brian Demsky [Fri, 19 Apr 2013 00:34:41 +0000 (17:34 -0700)]
Remove special cases for printing SC executions.
Just use happens before relation instead. Also include a criteria to keep things in execution order as much as possible.
Brian Demsky [Thu, 18 Apr 2013 21:53:58 +0000 (14:53 -0700)]
Add yield block support. The idea is to not generate executions with yield actions.
While preventing yields doesn't preserve livelock, under the CHESS assumptions, it does allow us to reach all states.
Brian Norris [Thu, 18 Apr 2013 01:45:44 +0000 (18:45 -0700)]
datarace: bugfix - use proper multiple-inclusion guard
The DATARACE_H macro is never defined, so it never succeeds as a
multiple-inclusion guard.
Brian Norris [Thu, 18 Apr 2013 00:10:20 +0000 (17:10 -0700)]
stacktrace: remove usage of FILE in stacktrace
The original print_stacktrace() function required a FILE pointer, so we
manufactured one. We really should avoid the bugs that can come from the
allocation and buffering done with FILE, since this is used on error
paths.
Brian Demsky [Wed, 17 Apr 2013 22:51:47 +0000 (15:51 -0700)]
Bug: ModelExecution had bogus model_params reference.
Fix.
Brian Norris [Wed, 17 Apr 2013 20:17:46 +0000 (13:17 -0700)]
datarace: bugfix - don't implicitly allocate global SnapVector
We do not want to pollute the user's snapshotting region with the
unrealizedraces SnapVector. Allocate it in initRaceDetector(), so that
it is placed on the model-checker's snapshotting heap.
Brian Norris [Wed, 17 Apr 2013 20:15:30 +0000 (13:15 -0700)]
datarace: don't export unrealized race vector
Brian Norris [Wed, 17 Apr 2013 17:50:25 +0000 (10:50 -0700)]
execution: bugfix - no action "conflicts" with itself
Brian Norris [Wed, 17 Apr 2013 17:46:19 +0000 (10:46 -0700)]
execution: bugfix - backtrack seq-cst fences properly
The commented-out ATOMIC_FENCE should not be commented out; the note
that "fences don't directly cause backtracking" is false for seq-cst
fences. We intend to backtrack for all seq-cst fences, so we need to
perform the appropriate 'get conflict' search for all fences.
Brian Norris [Wed, 17 Apr 2013 17:45:58 +0000 (10:45 -0700)]
execution: correct comment on check_current_action()
Brian Norris [Tue, 16 Apr 2013 19:27:06 +0000 (12:27 -0700)]
nodestack: localize the model-checker parameters
Brian Norris [Tue, 16 Apr 2013 18:58:28 +0000 (11:58 -0700)]
model: privatize ModelChecker::get_num_threads()
The public interface is now in ModelExecution.
Brian Norris [Tue, 16 Apr 2013 18:56:59 +0000 (11:56 -0700)]
nodestack: register ModelExecution class w/in NodeStack
Brian Norris [Tue, 16 Apr 2013 18:45:51 +0000 (11:45 -0700)]
promise: add max_available_thread_idx() interface
To remove an unnecessary use of global/public model->get_num_threads().
Brian Norris [Tue, 16 Apr 2013 18:29:11 +0000 (11:29 -0700)]
clockvector: don't use global get_num_threads()
Brian Norris [Tue, 16 Apr 2013 18:13:55 +0000 (11:13 -0700)]
model: remove leftover junk
Brian Norris [Tue, 16 Apr 2013 18:01:46 +0000 (11:01 -0700)]
execution: embed obj_map directly in class
This structure can be embedded as a full-fledged member, not a pointer.
Brian Norris [Tue, 16 Apr 2013 17:23:44 +0000 (10:23 -0700)]
hashtable: update documentation
Some of the existing documentation was incorrect or insufficient. Also,
add new documentation to describe the design "feature" of this table:
that 0/NULL is not a valid key.
Brian Norris [Tue, 16 Apr 2013 16:49:01 +0000 (09:49 -0700)]
hashtable: enforce, document non-zero keys
HashTable does not support a key of "zero." ...
Brian Norris [Tue, 16 Apr 2013 16:30:17 +0000 (09:30 -0700)]
execution: convert HashTable to SnapVector
We don't actually need a hash table for threads, since we allocate their
indeces contiguously, at least for now. Also, HashTable is really
designed for pointer-based keys and may not accept a 0-valued key. To
avoid these problems, just switch to a snapshotted vector.
Brian Norris [Tue, 16 Apr 2013 16:46:58 +0000 (09:46 -0700)]
action: bugfix - use non-zero fence "location"
Our HashTable does not support zero-based keys (e.g., NULL pointer as a
key). So as a hack, switch to use a small, arbitrary, non-zero location
instead of NULL (0).
Brian Norris [Tue, 16 Apr 2013 06:23:43 +0000 (23:23 -0700)]
execution: embed action_list as full member
Brian Norris [Tue, 16 Apr 2013 06:23:25 +0000 (23:23 -0700)]
execution: add const
Brian Norris [Tue, 16 Apr 2013 03:28:09 +0000 (20:28 -0700)]
execution: embed more data structures directly in class
Brian Norris [Tue, 16 Apr 2013 03:20:11 +0000 (20:20 -0700)]
execution: embed snapshotted data structures in class
Brian Norris [Tue, 16 Apr 2013 03:11:14 +0000 (20:11 -0700)]
execution: make structure snapshotting
All members are snapshot-able.
Brian Norris [Tue, 16 Apr 2013 03:08:41 +0000 (20:08 -0700)]
execution: move execution number back to ModelChecker class
Brian Norris [Tue, 16 Apr 2013 02:59:53 +0000 (19:59 -0700)]
clean out includes, etc.
Brian Norris [Tue, 16 Apr 2013 02:55:37 +0000 (19:55 -0700)]
model: embed the trace_analyses in the class
Brian Norris [Tue, 16 Apr 2013 02:53:40 +0000 (19:53 -0700)]
action: add <stdlib>
For exit() and EXIT_*
Brian Norris [Tue, 16 Apr 2013 02:48:25 +0000 (19:48 -0700)]
scanalysis: allocate structures as true members of class (not pointers)
They're all snapshotting, so it makes sense to make them legitimate
members of the SCAnalysis class.
Brian Norris [Tue, 16 Apr 2013 02:41:50 +0000 (19:41 -0700)]
scanalysis: fixup spacing
Brian Norris [Tue, 16 Apr 2013 18:35:07 +0000 (11:35 -0700)]
Merge cleanup branch
This branch separated ModelChecker into two separate classes/modules. It was a
big disruptive change, and it was not compile-able at some points (the BROKEN
commit and some of its successors). Hence the non-fast-forward merge here, to
record the divergent portion of history as special.
Brian Norris [Tue, 16 Apr 2013 02:37:21 +0000 (19:37 -0700)]
schedule: drop the ModelChecker::check_promises_thread_disabled interface
Brian Norris [Tue, 16 Apr 2013 02:31:58 +0000 (19:31 -0700)]
model / threads: remove global get_next_id() interface
Brian Norris [Tue, 16 Apr 2013 02:25:46 +0000 (19:25 -0700)]
promise: get reference to ModelExecution
Brian Norris [Tue, 16 Apr 2013 02:20:02 +0000 (19:20 -0700)]
scanalysis: use ModelExecution interfaces
Brian Norris [Tue, 16 Apr 2013 02:19:16 +0000 (19:19 -0700)]
scanalysis: install ModelExecution object in the analysis
Brian Norris [Tue, 16 Apr 2013 02:17:53 +0000 (19:17 -0700)]
execution: add 'const'
Brian Norris [Tue, 16 Apr 2013 02:01:41 +0000 (19:01 -0700)]
model: cleanup a few more interfaces
These public interfaces are no longer presentin ModelChecker.
Brian Norris [Tue, 16 Apr 2013 01:59:53 +0000 (18:59 -0700)]
model: add get_execution() interface
Brian Norris [Tue, 16 Apr 2013 01:25:53 +0000 (18:25 -0700)]
BROKEN: restructure much of ModelChecker as ModelExecution class
This will *not* compile fully. It is an interim step in which I move
much of the ModelChecker code into a separate class which does not need
to be globally-accessible. The next few commits should fix the compile
problems as I rewrite/remove some interfaces.
Brian Norris [Tue, 16 Apr 2013 01:46:18 +0000 (18:46 -0700)]
datarace: simplify raceCheck{Read,Write}() function interfaces
The user should not have to pass in a ClockVector.
Brian Norris [Tue, 16 Apr 2013 01:33:28 +0000 (18:33 -0700)]
datarace: make globals static
They're only global within this file.
Brian Norris [Tue, 16 Apr 2013 00:59:36 +0000 (17:59 -0700)]
model: drop public get_current_node() interface
Brian Norris [Tue, 16 Apr 2013 00:38:45 +0000 (17:38 -0700)]
model: remove public check_promises() interface
Brian Norris [Tue, 16 Apr 2013 00:28:11 +0000 (17:28 -0700)]
model: add synchronize() function
To prevent code duplication.
Brian Norris [Tue, 16 Apr 2013 01:19:10 +0000 (18:19 -0700)]
common: drop model_print_summary()
This can cause problems if we include it in the output of ASSERT().
Brian Norris [Tue, 16 Apr 2013 00:53:11 +0000 (17:53 -0700)]
promise: add Promise::get_index function
Brian Norris [Tue, 16 Apr 2013 00:26:24 +0000 (17:26 -0700)]
action: we don't need special cases for lock/join anymore
Brian Norris [Tue, 16 Apr 2013 00:12:20 +0000 (17:12 -0700)]
move license to LICENSE file
Brian Norris [Tue, 16 Apr 2013 00:09:53 +0000 (17:09 -0700)]
Merge cleanup code from Brian N.
Brian Norris [Mon, 15 Apr 2013 23:56:51 +0000 (16:56 -0700)]
traceanalysis: rename to remove '_'
Brian Norris [Mon, 15 Apr 2013 22:41:31 +0000 (15:41 -0700)]
bugmessage: move struct to header file
Brian Demsky [Mon, 15 Apr 2013 08:00:36 +0000 (01:00 -0700)]
fix weird duplicated code
Brian Norris [Mon, 15 Apr 2013 07:02:58 +0000 (00:02 -0700)]
params: move model_params to header file
Brian Norris [Mon, 15 Apr 2013 06:24:44 +0000 (23:24 -0700)]
model: add too_many_steps()
Brian Norris [Mon, 15 Apr 2013 06:11:53 +0000 (23:11 -0700)]
model: fixup whitespace
Brian Norris [Mon, 15 Apr 2013 04:34:49 +0000 (21:34 -0700)]
scanalysis: fix warning
canalysis.cc: In member function ‘bool SCAnalysis::processRead(ModelAction*, ClockVector*)’:
scanalysis.cc:162:78: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
Brian Norris [Mon, 15 Apr 2013 03:57:48 +0000 (20:57 -0700)]
scanalysis: remove whitespace
Brian Demsky [Sun, 14 Apr 2013 07:57:55 +0000 (00:57 -0700)]
clean up printing a little for cycle cases...
Brian Demsky [Fri, 12 Apr 2013 08:33:34 +0000 (01:33 -0700)]
more implementation of scanalysis...
implementation of scanalysis and printout code... should work now