Gabriel Corona [Thu, 10 Jul 2014 11:32:29 +0000 (13:32 +0200)]
[mc] Fix name of mc_snapshot_memcmp()
Gabriel Corona [Thu, 10 Jul 2014 10:44:22 +0000 (12:44 +0200)]
[mc] Add unit tests for reading/comparing the whole region in mc_snapshot
Gabriel Corona [Thu, 10 Jul 2014 10:30:10 +0000 (12:30 +0200)]
[mc] Test flat snapshots as well
Gabriel Corona [Thu, 10 Jul 2014 09:36:32 +0000 (11:36 +0200)]
[mc] Add unit test for mc_snapshot
Gabriel Corona [Tue, 8 Jul 2014 14:41:35 +0000 (16:41 +0200)]
[mc] Move page store test from the integration test into the unit test infrastructure
Gabriel Corona [Tue, 8 Jul 2014 14:27:51 +0000 (16:27 +0200)]
Add support for C++ in tools/sg_unit_extractor.pl
Gabriel Corona [Tue, 8 Jul 2014 13:12:00 +0000 (15:12 +0200)]
[mc] Use mc_snapshot_region_memcmp() in compare_areas_with_type()
Gabriel Corona [Tue, 8 Jul 2014 13:04:17 +0000 (15:04 +0200)]
[mc] Avoid memory allocation for flat snapshots in mc_snapshot_region_memcmp()
Gabriel Corona [Tue, 8 Jul 2014 12:48:42 +0000 (14:48 +0200)]
[mc] Fix name of mc_snapshot_region_memcmp
Gabriel Corona [Tue, 8 Jul 2014 11:43:29 +0000 (13:43 +0200)]
Merge branch 'mc-fix' into mc-fastsnapshot
Conflicts:
src/mc/mc_diff.c
Gabriel Corona [Tue, 8 Jul 2014 10:54:59 +0000 (12:54 +0200)]
[mc] Fix check on type name
The name was changed to include 'struct/class'.
Gabriel Corona [Fri, 4 Jul 2014 11:22:00 +0000 (13:22 +0200)]
[mc] Fix bad parameter passed in mc_diff
In the following calls:
compare_heap_area_with_type(state,
area1, area2,
area1_to_compare, area2_to_compare,
snapshot1, snapshot2,
previous, type, size, check_ignore,
pointer_level);
compare_heap_area_without_type(state,
area1, area2,
area1_to_compare, area2_to_compare,
snapshot1, snapshot2,
previous, size, check_ignore);
areaX and real_areaX_to_compare do not point the same data in different
address spaces in some cases.
Sometimes real_areaX_to_compare is adjusted to point to the beginning
of the block or fragment:
area1_to_compare = addr_block1;
// or
area1_to_compare = (char *) addr_frag1 + offset1;
// (when offset1==0)
but areaX is not adjusted accordingly and still point to the original
data: in the called compare_heap_area_with[out]_type(), the two values
are inconsistent.
Moreover in some cases, the type does not correspond:
* areaX_to_compareX is the beginning of the fragment ;
* type is the type of areaX, not the type of the fragment.
Gabriel Corona [Mon, 7 Jul 2014 08:41:29 +0000 (10:41 +0200)]
[mc] Fix lookup of malloc fragment type
In some cases, the type was looked up in the current heapinfo and not
in the snapshot one:
* in some cases this is not an issue as state->heapinfo2 is currently
the same as the current heapinfo but this solution is more robust;
* if we were supposed to look it from state->heapinfo1 this is wrong.
Gabriel Corona [Fri, 4 Jul 2014 12:27:49 +0000 (14:27 +0200)]
[mc] Fix bound check in mc_snapshot_read_region
Gabriel Corona [Thu, 3 Jul 2014 10:58:34 +0000 (12:58 +0200)]
[mc] Add mc_snapshot_read_pointer()
Gabriel Corona [Thu, 3 Jul 2014 10:01:00 +0000 (12:01 +0200)]
[mc] Bug: MC was reading from the wrong region
Gabriel Corona [Thu, 26 Jun 2014 12:35:40 +0000 (14:35 +0200)]
[mc] Inline mc_snapshot_read_region()
Gabriel Corona [Thu, 26 Jun 2014 12:10:38 +0000 (14:10 +0200)]
[mc] Inline mc_translate_address() and mc_translate_address_region()
Gabriel Corona [Thu, 26 Jun 2014 10:12:16 +0000 (12:12 +0200)]
[mc] Forgot to decrease the page refcounts when freeing a snapshot
Gabriel Corona [Tue, 24 Jun 2014 12:51:10 +0000 (14:51 +0200)]
[mc] Add support of privatized global variables in per-page snapshot
Not very useful because state comparison does not work with SMPI
privatisation yet.
Gabriel Corona [Tue, 24 Jun 2014 11:29:28 +0000 (13:29 +0200)]
[mc] Avoid loosing meaningful bits ot pair.p2 when hashing pointer pair
Gabriel Corona [Tue, 24 Jun 2014 08:34:51 +0000 (10:34 +0200)]
[mc] Use an unordered_set for compared_pointers instead of a dynarr
It has a better algorithmic complexity.
At the same time, avoid using TLS which is not implemented with
destructor-enabled data structures before C++11.
Gabriel Corona [Tue, 24 Jun 2014 07:23:20 +0000 (09:23 +0200)]
[mc] Remove declaration of mc_read_pagemap() in mc_page_store.cpp
It is now in mc_page_snapshot.cpp.
Gabriel Corona [Tue, 24 Jun 2014 07:13:41 +0000 (09:13 +0200)]
[mc] Optimise more files
Gabriel Corona [Mon, 23 Jun 2014 10:02:49 +0000 (12:02 +0200)]
[mc] Always inline mc_page_store_get_page (C version of page_store->get_page())
Gabriel Corona [Mon, 23 Jun 2014 08:30:57 +0000 (10:30 +0200)]
[mc] Move method definition out of class declaratio and force inline
Gabriel Corona [Fri, 20 Jun 2014 14:09:12 +0000 (16:09 +0200)]
[mc] Reset the softdirty bits *before* restoring the ignored bytes (not after)
We want to know what has changed since the last per-page snapshot: we
have to reset the soft dirty bits just after the per-page restoration.
Gabriel Corona [Fri, 20 Jun 2014 13:31:04 +0000 (15:31 +0200)]
[mc] Try to use optimisation with some part of the MC
Gabriel Corona [Fri, 20 Jun 2014 12:02:05 +0000 (14:02 +0200)]
[mc] Always inline 'inline' functions
The MC is usually compiled without optimisation as they tend to
confuse the state comparison. But we *really* want to inline functions
declared 'inline'.
Gabriel Corona [Fri, 20 Jun 2014 08:33:27 +0000 (10:33 +0200)]
[mc] Fix compilation warnings/errors when optimizing
Gabriel Corona [Thu, 19 Jun 2014 14:07:55 +0000 (16:07 +0200)]
[mc] Documentation of mc_page_snapshot
Gabriel Corona [Thu, 19 Jun 2014 13:49:21 +0000 (15:49 +0200)]
[mc] Config to disable soft-dirty page tracking --cfg=model-check/soft-dirty:yes
It is here mostly to test the effect on soft-dirty page tracking on
the performance of the simulator. It might be removed in the future
once we will be certain that soft-dirty page tracking does not have a
significant negative impact on some workloads.
Gabriel Corona [Thu, 19 Jun 2014 13:33:12 +0000 (15:33 +0200)]
[mc] Avoid big alloca in mc_snapshot_region_memcp and mc_snapshot_memcp
Be more stack friendly.
Gabriel Corona [Thu, 19 Jun 2014 13:17:58 +0000 (15:17 +0200)]
[mc] Poor man's TCO in compare_heap_area_with_type()
This is slightly more friendly for the stack.
Gabriel Corona [Thu, 19 Jun 2014 13:13:42 +0000 (15:13 +0200)]
[mc] Do not allocate pagemap buffer on the heap
This won't work very well with small stacks.
Gabriel Corona [Thu, 19 Jun 2014 12:47:41 +0000 (14:47 +0200)]
[mc] pread_whole must restart in cas of EINTR, not EAGAIN
This probably won't happen with this file anyway.
Gabriel Corona [Thu, 19 Jun 2014 12:46:16 +0000 (14:46 +0200)]
[mc] Documentation about per-page snapshots
Gabriel Corona [Thu, 19 Jun 2014 12:06:15 +0000 (14:06 +0200)]
[mc] Add some documentation
Gabriel Corona [Thu, 19 Jun 2014 11:09:09 +0000 (13:09 +0200)]
[mc] Avoid region lookup when we know we are in the heap
Gabriel Corona [Thu, 19 Jun 2014 10:43:22 +0000 (12:43 +0200)]
[mc] Fix bug mc_snapshot_read_fragmented
Return the correct address.
Gabriel Corona [Thu, 19 Jun 2014 10:27:31 +0000 (12:27 +0200)]
[mc] Replace test-and-die with assert
Gabriel Corona [Thu, 19 Jun 2014 10:24:09 +0000 (12:24 +0200)]
[mc] Avoid looking up region in mc_diff (we are in the heap)
Gabriel Corona [Thu, 19 Jun 2014 10:03:34 +0000 (12:03 +0200)]
[mc] Fix mc_snapshot_read_fragmented
Gabriel Corona [Thu, 19 Jun 2014 09:51:00 +0000 (11:51 +0200)]
[mc] Remove heap{base,info}{1,2} field in struct s_mc_diff (not meaningful in per-page snapashots)
Gabriel Corona [Thu, 19 Jun 2014 07:53:24 +0000 (09:53 +0200)]
[mc] Fix inverted test on page soft-dirtiness
Gabriel Corona [Tue, 17 Jun 2014 14:44:42 +0000 (16:44 +0200)]
[mc] Do not use offsetof() in mc_snapshot_get_heap_end
We don't need this. It's much clearer like this.
Gabriel Corona [Tue, 17 Jun 2014 14:40:25 +0000 (16:40 +0200)]
[mc] Fix mc_snapshot_get_heap_end() for per-page snapshots
Gabriel Corona [Tue, 17 Jun 2014 14:19:28 +0000 (16:19 +0200)]
[mc] Fix mc_translate_address_region() for per-page snapshots
It was completely broken :/
Gabriel Corona [Tue, 17 Jun 2014 13:52:32 +0000 (15:52 +0200)]
[mc] Remove mc_untranslate_address() and mc_member_snapshot_resolve()
Those were working in the snapshot address space so we do not use them
anymore (it is not very useful to work in the snapshot space when the
snapshot space is broken in pages).
We work in the process address space instead (mc_member_resolve).
Gabriel Corona [Tue, 17 Jun 2014 13:45:39 +0000 (15:45 +0200)]
[mc] Use mc_snapshot_read in snapshot_compare (compatibility with per-page snapshots)
Gabriel Corona [Tue, 17 Jun 2014 13:29:24 +0000 (15:29 +0200)]
[mc] mremap does not like MAP_PRIVATE|MAP_ANONYMOUS regions
Use a MAP_PRIVATE one instead.
Gabriel Corona [Tue, 17 Jun 2014 12:42:38 +0000 (14:42 +0200)]
[mc] Add option --cfg=model-check/sparse-checkpoint:yes to enable per page snapshot
Gabriel Corona [Tue, 17 Jun 2014 12:21:50 +0000 (14:21 +0200)]
[mc] Fix bugs in mc_page_snapshot
Gabriel Corona [Tue, 17 Jun 2014 12:06:04 +0000 (14:06 +0200)]
[mc] Use mc_snapshot_read in mc_diff (compatibility with per-page snapshots)
Gabriel Corona [Tue, 17 Jun 2014 10:56:32 +0000 (12:56 +0200)]
[mc] Use mc_snapshot_read in dwarf expression evaluation (compatibility with per-page snapshots)
Gabriel Corona [Tue, 17 Jun 2014 10:54:29 +0000 (12:54 +0200)]
[mc] Fix bug in mc_snapshot_read
It was broken when no snapshot was used.
Gabriel Corona [Tue, 17 Jun 2014 10:12:57 +0000 (12:12 +0200)]
[mc] Remove useless bits
Gabriel Corona [Mon, 16 Jun 2014 14:10:26 +0000 (16:10 +0200)]
[mc] Remove useless parameters in compare_local_variables
Gabriel Corona [Mon, 16 Jun 2014 13:59:34 +0000 (15:59 +0200)]
[mc] Group MC_ignore_global_variable("mc_diff_info"); its fiends
Gabriel Corona [Mon, 16 Jun 2014 13:29:26 +0000 (15:29 +0200)]
[mc] Remove useless parts in mmalloc_compare_heap, MC_take_snapshot_stacks, snapshot_compare
Gabriel Corona [Mon, 16 Jun 2014 12:50:42 +0000 (14:50 +0200)]
[mc] Use process addresses in mc_compare
This is necessary in order to work work with per-page snapshots.
Gabriel Corona [Fri, 13 Jun 2014 14:03:58 +0000 (16:03 +0200)]
[mc] Partial integration of per-page snapshot address translation (wip)
Gabriel Corona [Mon, 16 Jun 2014 11:00:15 +0000 (13:00 +0200)]
[mc] Simplify s_mc_snapshot_stack
Some fields were not used and have been removed:
* stack_pointer (SP in the snapshot)
* real_address (address of the stack)
The first one does not make sense with page-fragmented snapshot.
Simplify the computation of snapshot->stack_sizes[cursor]. The old
computation did not make sense with page fragmented snapshots.
Gabriel Corona [Fri, 13 Jun 2014 09:17:52 +0000 (11:17 +0200)]
[mc] Update doc for page_store
Gabriel Corona [Tue, 27 May 2014 10:27:47 +0000 (12:27 +0200)]
[mc] Page-level sparse snapshot: work-in-progress, working page_store
Implement page_store which stores immutables/shared/refcounted copies
of memory pages.
Gabriel Corona [Fri, 13 Jun 2014 12:07:46 +0000 (14:07 +0200)]
[mc] In MC_ignore, keep the zeroed data out of the main snapshot
The previous implementation was zeroing out the snapshot data
* so that it will be automatically ignored by the state comparator;
* but not for the first snapshot in order to be able to backtrack
to the initial state;
In preparation for the per-page snapshoting code, we
1. zero out on the main memory;
2. keep the zero-ed bytes out of the main snapshot regions;
3. restore the zero-ed bytes.
This way the state comparison code and the per-page snapshoting code
do not have to worry about this. Moreover by normalizing, the
"ignored" bytes, we increase the possibility of sharing memory pages
in per-page snapshots.
Gabriel Corona [Thu, 5 Jun 2014 17:24:38 +0000 (19:24 +0200)]
Remove comment which has not been accurate for a long long time
Marion Guthmuller [Wed, 4 Jun 2014 15:15:21 +0000 (17:15 +0200)]
model-checker : use new variable _sg_mc_liveness instead of _sg_mc_property_file
Marion Guthmuller [Wed, 4 Jun 2014 15:13:23 +0000 (17:13 +0200)]
model-checker : remove useless debug message and add another one
Marion Guthmuller [Wed, 4 Jun 2014 15:08:47 +0000 (17:08 +0200)]
model-checker : compare the pid of enabled processes before memory introspection
Marion Guthmuller [Wed, 4 Jun 2014 08:35:10 +0000 (10:35 +0200)]
model-checker : fix backtracking with comm determinism verification
Marion Guthmuller [Tue, 3 Jun 2014 17:00:53 +0000 (19:00 +0200)]
model-checker : comment erroneous ignore (not completely sure ...)
Marion Guthmuller [Tue, 3 Jun 2014 16:14:09 +0000 (18:14 +0200)]
model-checker : use the right heap
Marion Guthmuller [Tue, 3 Jun 2014 16:13:18 +0000 (18:13 +0200)]
model-checker : reword debug message
Marion Guthmuller [Tue, 3 Jun 2014 16:10:33 +0000 (18:10 +0200)]
model-checker : mc_dpor.c -> mc_safety.c
Marion Guthmuller [Tue, 3 Jun 2014 15:45:43 +0000 (17:45 +0200)]
model-checker : remove useless ignore
Marion Guthmuller [Tue, 3 Jun 2014 08:42:48 +0000 (10:42 +0200)]
model-checker : new tesh examples about communications determinism verification
Marion Guthmuller [Fri, 30 May 2014 21:51:41 +0000 (23:51 +0200)]
model-checker : fix comm determinism detection mechanisms
Marion Guthmuller [Fri, 30 May 2014 21:30:34 +0000 (23:30 +0200)]
model-checker : forget file
Marion Guthmuller [Fri, 30 May 2014 21:28:56 +0000 (23:28 +0200)]
model-checker : cleanups, refactoring and apply indent script
Marion Guthmuller [Fri, 30 May 2014 10:04:10 +0000 (12:04 +0200)]
model-checker : cosmetics in log message
Marion Guthmuller [Fri, 30 May 2014 07:37:44 +0000 (09:37 +0200)]
model-checker : improve error message
Gabriel Corona [Mon, 26 May 2014 10:12:39 +0000 (12:12 +0200)]
[mc] Temporary fix for smpi_process_finalize leading to graph explosion in MC
Gabriel Corona [Mon, 26 May 2014 10:05:12 +0000 (12:05 +0200)]
Merge branch 'master' into mc
Stéphane Castelli [Mon, 26 May 2014 09:42:17 +0000 (11:42 +0200)]
Fix a compilation error regarding logging and strings in fat trees
Stéphane Castelli [Mon, 26 May 2014 08:55:34 +0000 (10:55 +0200)]
Lots of bugfixes for the fat trees, it should at least not crash when using it
Stéphane Castelli [Thu, 22 May 2014 14:53:21 +0000 (16:53 +0200)]
small cosmetics to AsClusterFatTree::generateDotFile()
Stéphane Castelli [Thu, 22 May 2014 12:36:10 +0000 (14:36 +0200)]
Fix some bugs in fat trees
Martin Quinson [Sat, 24 May 2014 20:38:15 +0000 (22:38 +0200)]
make the xbt_os_time module public
Martin Quinson [Sat, 24 May 2014 20:13:27 +0000 (22:13 +0200)]
update the comments of that file
suter [Fri, 23 May 2014 18:34:01 +0000 (20:34 +0200)]
listing new files
suter [Fri, 23 May 2014 18:27:50 +0000 (20:27 +0200)]
start testing remote I/Os
suter [Fri, 23 May 2014 18:03:57 +0000 (20:03 +0200)]
leak--
suter [Fri, 23 May 2014 17:47:49 +0000 (19:47 +0200)]
allow several hosts to open the same file simultaneously
suter [Fri, 23 May 2014 10:44:54 +0000 (12:44 +0200)]
Throw an exception only when it's really not implemented
Arnaud Giersch [Fri, 23 May 2014 09:46:07 +0000 (11:46 +0200)]
Move unachieved release goals from ChangeLog to TODO file.
Arnaud Giersch [Thu, 22 May 2014 09:40:23 +0000 (11:40 +0200)]
Cosmetics: keep alphabetical order.
Paul Bédaride [Thu, 22 May 2014 15:23:43 +0000 (17:23 +0200)]
Update doc for surf++
Gabriel Corona [Thu, 22 May 2014 12:09:16 +0000 (14:09 +0200)]
Revert "[mmalloc] Use mremap to expand heaps (heap collision prevention)"
This is really how is should be handled. However, this does not work
if someone has split the VMA in parts: this is done when creating
stacks on the heap without MC, mprotect() is used to create a guard
page for the stack.
This reverts commit
ba3185d8a4f0a56804d3b1ff24e596096f06a37c.
Gabriel Corona [Thu, 22 May 2014 11:45:55 +0000 (13:45 +0200)]
Documentation for stack size, stack guard and context factory