Brian Norris [Wed, 14 Aug 2013 06:29:20 +0000 (23:29 -0700)]
README.md: add more fairness notes
Brian Norris [Wed, 14 Aug 2013 06:24:13 +0000 (23:24 -0700)]
Makefile: add README.pdf target
Using pandoc:
http://johnmacfarlane.net/pandoc/
Brian Norris [Wed, 14 Aug 2013 05:38:39 +0000 (22:38 -0700)]
README.md: remove <pre></pre> tags
It's better to just use pure Markdown.
Brian Norris [Wed, 14 Aug 2013 05:16:20 +0000 (22:16 -0700)]
threads: kill clang warnings about struct/class Thread
We just need an opaque pointer for C, so we can retain the type safety
for C++ by conditionally compiling a '__thread_identifier' type as
'class Thread' for C++.
The warning:
clang++ -MMD -MF .threads.o.d -fPIC -c threads.cc -Wall -g -O3 -Iinclude -I.
In file included from schedule.cc:4:
./threads-model.h:41:1: warning: 'Thread' defined as a class here but previously declared as a struct [-Wmismatched-tags]
class Thread {
^
include/threads.h:9:1: note: did you mean class here?
struct Thread; /* actually, class; but this is safe */
^~~~~~
class
Brian Norris [Wed, 14 Aug 2013 05:05:23 +0000 (22:05 -0700)]
malloc: modify compiler warning workarounds
clang will complain when (in a function like this) we try to silence
"unused" warnings with a self-assignment. It's equivalently useless to
just cast to (void), and I think it will still silence the warning it
was originally trying to silence.
Brian Norris [Wed, 14 Aug 2013 04:51:56 +0000 (21:51 -0700)]
impatomic: silence more clang warnings
These 'return' values produce unused value warnings when the value
returned by _ATOMIC_STORE_, _ATOMIC_INIT_, and _ATOMIC_MODIFY_ aren't
used. Silence these warnings (but leave the ones for _ATOMIC_LOAD_)
because we expect that the result of RMW's or stores may rightly be
discarded in many cases.
Brian Norris [Wed, 14 Aug 2013 04:49:55 +0000 (21:49 -0700)]
test: silence some unused-value warnings
clang gives some warnings for unused values, like the following:
clang -MMD -MF ./.rmw2prog.o.d -o rmw2prog.o rmw2prog.c -Wall -g -O3 -I.. -I../include -L.. -lmodel
nestedpromise.c:14:2: warning: expression result unused [-Wunused-value]
atomic_load_explicit(&z, memory_order_relaxed); // this is only for schedule control
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/impatomic.h:2901:46: note: expanded from:
#define atomic_load_explicit( __a__, __x__ ) \
^
../include/impatomic.h:85:17: note: expanded from:
__r__; })
^~~~~
1 warning generated.
Brian Norris [Wed, 14 Aug 2013 04:16:34 +0000 (21:16 -0700)]
README.md: have to include our headers
Brian Norris [Wed, 14 Aug 2013 04:13:14 +0000 (21:13 -0700)]
README.md: reverse store/load
Brian Norris [Wed, 14 Aug 2013 04:09:30 +0000 (21:09 -0700)]
README.md: add supported API section
Brian Norris [Wed, 14 Aug 2013 01:00:56 +0000 (18:00 -0700)]
README.md: add End of Execution Summary section
Brian Norris [Wed, 14 Aug 2013 00:33:22 +0000 (17:33 -0700)]
README.md: reporting multiple data races for the same access?
Brian Norris [Wed, 14 Aug 2013 00:32:43 +0000 (17:32 -0700)]
model: only print 'Total nodes' for verbose printing
Average users don't need to see this.
Brian Norris [Wed, 14 Aug 2013 00:13:55 +0000 (17:13 -0700)]
README.md: reformat
Brian Norris [Wed, 14 Aug 2013 00:12:06 +0000 (17:12 -0700)]
README.md: add linux locks example
Brian Norris [Wed, 14 Aug 2013 00:08:34 +0000 (17:08 -0700)]
README.md: update title
Brian Norris [Wed, 14 Aug 2013 00:04:24 +0000 (17:04 -0700)]
README.md: point non-git users to gitweb
Brian Norris [Tue, 13 Aug 2013 23:50:17 +0000 (16:50 -0700)]
README.md: push URLs down to See Also section
Brian Norris [Tue, 13 Aug 2013 23:50:03 +0000 (16:50 -0700)]
README.md: add extra blank lines
Brian Norris [Tue, 13 Aug 2013 23:43:08 +0000 (16:43 -0700)]
README.md: update much of the README
Integrate some info from the website and the OOPSLA artifact submission,
and improve the whole thing to be a single reference document.
Brian Norris [Tue, 13 Aug 2013 22:42:47 +0000 (15:42 -0700)]
main: suggest thrd_yield() for -y fairness
Brian Norris [Tue, 13 Aug 2013 22:34:22 +0000 (15:34 -0700)]
run.sh: set Mac OSX DYLD_LIBRARY_PATH
DYLD_LIBRARY_PATH is the Mac OSX equivalent of Unix LD_LIBRARY_PATH.
Brian Norris [Tue, 13 Aug 2013 22:11:12 +0000 (15:11 -0700)]
delete README symlink
Readers should just look at README.md, or the generated README.html.
Brian Norris [Tue, 13 Aug 2013 22:09:36 +0000 (15:09 -0700)]
LICENSE: add newline at end of file
Brian Norris [Wed, 17 Jul 2013 02:31:20 +0000 (19:31 -0700)]
test: insanesync: consolidate lines
Brian Norris [Wed, 17 Jul 2013 02:28:35 +0000 (19:28 -0700)]
test: insanesync: remove unnecessary casting
Brian Norris [Wed, 17 Jul 2013 02:22:52 +0000 (19:22 -0700)]
test: insanesync: convert to C++
The syntax is clearer this way, and I can make it more consistent with
the other satisfaction cycle examples I wrote.
Brian Norris [Tue, 16 Jul 2013 20:22:43 +0000 (13:22 -0700)]
test: addr-satcycle: add new address-based sat. cycle example
See the comments and assertion in the program for the description.
Brian Norris [Wed, 10 Jul 2013 01:44:19 +0000 (18:44 -0700)]
run.sh: don't silently ignore a non-executable file argument
If we use a file which exists but is not executable as an argument to
run.sh, run.sh will silently ignore it. This is wrong.
Instead, just check for existence of the file (or directory), and error
out with a "Permission denied" message later, when we try to run it.
Brian Norris [Wed, 10 Jul 2013 01:33:33 +0000 (18:33 -0700)]
test: mo-satcycle: add new MO satisfaction cycle example
See the comments at the top of the file.
Brian Norris [Wed, 10 Jul 2013 01:18:07 +0000 (18:18 -0700)]
test: uninit: typo
Brian Norris [Thu, 6 Jun 2013 00:25:30 +0000 (17:25 -0700)]
execution: remove redundant condition, reword doc for promises_may_allow
promises_may_allow() doesn't actually need to check for
promises.empty(), as the loop bounds take care of that. In the same
spirit, we can reword the comments/documentation so that
(1) it is not redundant (condition (a) is subsumed by (b))
(2) we are more explicit about what we actually mean by "crossing
promises"
Brian Norris [Thu, 6 Jun 2013 00:14:32 +0000 (17:14 -0700)]
execution: document additional mo_may_allow() optimization
mo_may_allow() actually performs two optimizations, not just the one
that is documented in its header.
Brian Norris [Thu, 6 Jun 2013 00:13:55 +0000 (17:13 -0700)]
execution: document promises list; it is assumed to be sorted
Document the assumptions made about the 'promises' list.
Brian Norris [Wed, 5 Jun 2013 23:31:41 +0000 (16:31 -0700)]
model: remove redundant code (is_enabled)
These members should just stay implemented in execution.{cc,h}, not
model.{cc,h}.
Brian Norris [Wed, 5 Jun 2013 02:06:35 +0000 (19:06 -0700)]
docs: improve Doxygen documentation
* Fix the PROJECT_NAME title
* Add include/ to documentation
* Include our generated README.html as the main page in the docs
- NOTE: Doxygen 1.8.0+ can directly generate documentation from the
Markdown format (i.e., README.md). This may be useful in the future
to get more integrated support, but for now, the
separately-generated HTML is good enough
Brian Norris [Wed, 5 Jun 2013 01:20:42 +0000 (18:20 -0700)]
README: use markdown format for direct URL link
Brian Norris [Tue, 4 Jun 2013 23:32:39 +0000 (16:32 -0700)]
README: more formatting, correct statement about bench.sh
Brian Norris [Tue, 4 Jun 2013 23:30:00 +0000 (16:30 -0700)]
README: a few more formatting issues
Brian Norris [Tue, 4 Jun 2013 23:14:18 +0000 (16:14 -0700)]
Merge branch 'markdown'
Brian Norris [Tue, 4 Jun 2013 23:04:56 +0000 (16:04 -0700)]
README: add more `code` formatting
Brian Demsky [Mon, 3 Jun 2013 19:02:19 +0000 (12:02 -0700)]
Add example from java showing legit satisfaction cycle
Brian Norris [Sun, 2 Jun 2013 00:07:37 +0000 (17:07 -0700)]
.gitignore: fixup VIM swapfile ignore
Brian Norris [Sun, 2 Jun 2013 00:06:33 +0000 (17:06 -0700)]
README: convert to Markdown format
Now we can easily generate an HTML version, while retaining readability
as a simple text file.
Brian Norris [Sun, 2 Jun 2013 00:04:41 +0000 (17:04 -0700)]
Markdown: add Markdown tool
For conversion of Markdown format to HTML.
From:
http://daringfireball.net/projects/markdown/
License terms are easy to comply with (see doc/Markdown/License.text).
Brian Norris [Sat, 1 Jun 2013 23:08:16 +0000 (16:08 -0700)]
README: add bit on MODEL_ASSERT() macro
Brian Norris [Sat, 1 Jun 2013 00:46:34 +0000 (17:46 -0700)]
README: extra "from"
Brian Norris [Sat, 1 Jun 2013 00:44:03 +0000 (17:44 -0700)]
README: updated help text
Brian Norris [Fri, 31 May 2013 23:50:40 +0000 (16:50 -0700)]
model: cosmetic output improvements
A few cosmetic improvements:
* Provide more uniform newlines
* Clearly show which output is produced by the test program
* Provide clear heading to show which output belongs to which program
execution
* Label the program trace if it has bugs
I'm sure there's more that could be improved, but that's it for now.
Brian Norris [Fri, 31 May 2013 23:45:42 +0000 (16:45 -0700)]
params: add multi-level verbosity
Now we can have --verbose=[012], so that the default (0) is still quiet,
the easy verbose flag (--verbose or -v) is noisy but useful (1), and if
you really want some extra noise, you can choose (2). Right now, there
is some minimal extra noise in (2), but this may be expanded if we want
more run-time debuggability, rather than recompiling with 'make debug'.
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.