Commit Graph
100 Commits
Author SHA1 Message Date
Horst Schirmeier da3a78ec4d faultspaceplot: fix ymin calculation
The initialization value for ymin, which tracks the lower bound of
plotted rectangles (and is finally used for the preselected zoom
area), was chosen too small for Linux-kernel data structure addresses.

Change-Id: I7cd8dc690843394107e8aae7fffa90f27ca18153
2016-12-03 17:49:07 +01:00
Horst Schirmeier 89866de85f bochs: backport PCI IDE controller DMA start fix
Upstream SVN r12754: "Fixed PCI IDE controller DMA start (found with a
recent Linux version: "mode sense" command executed in DMA mode).
Updated output of "mode sense" page 0x2a (still reporting CD-ROM
drive)."

(data_ready part not backported due to missing dependency)

Change-Id: I392ba2b20a4138682fc34d6d2a78da0c6706e280
2016-08-06 19:44:49 +02:00
Horst Schirmeier fbd788f05e bochs: backport overlapping memcpy fix
Upstream SVN r12563: "Bugfix: use memmove() if source and destination
range can overlap (found with valgrind)."

(Manually backported, the code structure has significantly changed
before this fix.)

Change-Id: Id176fb5b0aca806908cfb06f06bb5a7221ccc9c4
2016-08-06 17:50:27 +02:00
Horst Schirmeier a2798cc2bf bochs: backport PCI IDE buffer-overflow fix
Upstream SVN r10244: "Fixed possible buffer overflow causing segfault
or memory corruption. The buffers are not large enough for the maximum
sector count in LBA48 mode. Now resetting buffer pointers after
processing a PRD (and move remaining data if necessary). This should
fix the SF bug items #3190970 and #3077616."

This happened to us when booting Debian 8 with a Linux 3.16 kernel
from "flat" or "volatile" disk images, in the end corrupting the VGA
card's ("theVga") internal state and segfaulting.

Change-Id: I6a80432093a547dc2eb5270845369d0918e1e49b
2016-08-06 17:49:39 +02:00
Horst Schirmeier 436930de71 rampage: fix integer overflow
Change-Id: I18ee65335efd0207c27da9524d74be5d5a575329
2016-08-01 16:39:42 +02:00
Horst Schirmeier 2aeded20be rampage: link correctly with Bochs
Change-Id: I7a0231c6b6e8983f86b94c2bfde78d2524dbfc8d
2016-08-01 16:36:17 +02:00
Horst Schirmeier 8a63533137 Merge branch 'hannesweisbach-fixes' 2016-07-26 18:13:53 +02:00
Horst Schirmeier 6509d50ec1 compute-hops: detail fixes and optional procps dep
Cleanups, warning fix, optional procps dep, --help correction.

Change-Id: Iba719493e4a8ec37acb7336a39172b3cdefbdc99
2016-07-26 17:41:32 +02:00
Horst Schirmeier b5aaddcb8f new publications using FAIL*
Change-Id: Idf4bb22712475d5a6df182bb7ad19729e81c4591
2016-07-26 17:41:32 +02:00
Horst Schirmeier d3d2faf680 globally rename Fail* to FAIL*
Change-Id: Ief2cb687cc69dd92c2e04f9314f0f1347e0a84ed
2016-07-26 17:41:32 +02:00
Horst Schirmeier 94a56c43c8 remove deprecated stuff
Change-Id: Ifc25d216bbf782416159ceb0c366a080d2c8c428
2016-03-15 23:20:05 +01:00
Horst Schirmeier 69da134956 Merge branch 'wsos' 2016-03-15 23:16:42 +01:00
Horst Schirmeier de8598ab83 cmake: prefer LLVM 3.4 over system-wide default
FindLLVM.cmake now starts searching for specific "llvm-config-x.y"
versions instead of using the system-wide default "llvm-config" first.
This avoids breaking builds on Debian 8, where LLVM 3.5 is the (yet
unsupported) default, but 3.4 is still installable.

Change-Id: I6fd577f515a233e30c6f803f87b9a680b5515a5b
2016-03-11 20:59:01 +01:00
Horst Schirmeier 449ac1a692 DatabaseExperiment: local debug helper code
Change-Id: Ibf42c93df26f6123edc867147621a011665e9c43
2016-03-11 20:59:01 +01:00
Horst Schirmeier 39b120f7ca GenericExperiment: record output during complete runtime
Before this change, the GenericExperiment only recorded port 0xe9 output
*after* the fault was injected.  When a fault was injected during the
workload's output loop, the output data before that point in time was
missing, and the experiment outcome was wrongly classified as SDC.

This change moves the logging activation to before the fast-forwarding
step (DatabaseExperiment::cb_before_fast_forward).  It also makes sure the
DatabaseExperiment only clears its own listeners instead of also touching
the SerialOutputLogger's one.

Change-Id: I66bda4ee318d271ddda6f7ade4e817bf9d14cf46
2016-03-11 20:59:01 +01:00
Horst Schirmeier 5bd7c4a9c5 GenericExperiment: limit output logger buffer
Limit the serial-output logger buffer to prevent overly large memory
consumption in case the target system ends up, e.g., in an endless loop.
The buffer is limited to (golden-run output size)+1 to be able to detect
the case when the target system makes a correct output but faultily adds
extra characters afterwards.

Change-Id: I50c082f8fb09a702d87ab83732ca3e3463c46597
2016-03-11 20:59:01 +01:00
Horst Schirmeier e08deef9d5 GenericExperiment: prevent integer overflow
This change prevents an integer overflow in the memory-access listener
for WRITE_OUTERSPACE.  Instead of matching all addresses above
maxima_data, l_mem_outerspace never matched in the
generic-experiment's "--catch-write-outerspace" mode.

Change-Id: I8f4ee4515af3998b7c2a8e83c7a18306c26d8d66
2016-03-11 20:45:50 +01:00
Horst Schirmeier 7168566ef5 faultspaceplot: -k -- keep CSVs only optionally
Change-Id: I5900c53b81d15d5262420afbf636444af31b00f1
2016-03-11 20:44:31 +01:00
Horst Schirmeier ee8759f6b8 faultspaceplot: don't round down ymin
Before this change, ymin was rounded down to the nearest Y value
divisible by 1000, showing an empty, white area in the lower part of
the plot.  With this change, the initial Y-axis zoom level is
maximized to exactly show all non-white areas.

Change-Id: I1aea52a3afc331e7f11fe76ff2c5de3c71c61c71
2016-03-11 20:41:52 +01:00
Horst Schirmeier e8ca3ba6ea faultspaceplot: don't plot OK_MARKER
In the current configuration, OK_MARKER would be plotted in white
color and be indistinguishable from the background.  Not plotting
these areas at all reduces output-file size.  As a side effect, the
initial Y-axis zoom level (ymin, ymax) can change.

Change-Id: Ic7b1a22a5a6f58e4df0849bca5262c646051ae2c
2016-03-11 20:36:07 +01:00
Horst Schirmeier 915a344223 faultspaceplot: better distinguishable colors
Change-Id: I49517fd104394e598937ab1c8970c739e41993b7
2016-03-11 20:36:07 +01:00
Horst Schirmeier ea0a5f90e2 faultspaceplot: add ticks for symbols if available
+ use helper scripts from the same dir, not from $PATH

Change-Id: I7aba773c8dbff5f8643a39fa1ed8d26867f3a86d
2016-03-11 20:36:07 +01:00
Horst Schirmeier 3dd7c9cb48 faultspaceplot: plot burst faults correctly
+ remove "old matplotlib" warning

Change-Id: I47dec1cc6bf6dd86216cd6d373174d4c70556f63
2016-03-11 20:36:07 +01:00
Horst Schirmeier 2bed7c124a data-aggregator: per-function + durations
Change-Id: I1dc7791fe9af7f848f56093e0554c61973b7a1f3
2016-03-11 20:36:07 +01:00
Horst Schirmeier dd7ad77731 data-aggregator: add -t for table output
By default, the data-aggregator scripts create machine-readable,
tab-separated output.  The optional "-t" switch (passed to the
internally used `mysql' command-line client) creates human-readable
table output instead.

Change-Id: Ie448c21a4e82dea83f3e43e6642e67eb85f8b8e9
2016-03-11 19:07:40 +01:00
Horst Schirmeier 584ef57aab data-aggregator: allow resulttype aggregation for all benchmarks
This change additionally allows to create a resulttype/occurrences summary
over all benchmarks in the database, instead of specifying a single one.

Change-Id: I4fc7fd735300168f1e4f9e24a51aba469a7269a8
2016-03-11 19:07:40 +01:00
Horst Schirmeier 5851f5d848 data-aggregator: add aggregate per translation unit
Change-Id: Ibd141eccb2549dfad64e8daf35a16e3461a07f9f
2016-03-11 19:07:40 +01:00
Horst Schirmeier 927d6a5103 import-trace: import symbol size if available
Instead of using the address difference between two neighboring symbols as
an indication for the symbol's size, import the size as reported by
`nm -S'.

Additionally, this change fixes an off-by-one, which had the effect that
the last symbol in the list was not imported at all.

Change-Id: I3c8e139b788018702526bb968e36d248dc3fe8fc
2016-03-11 19:07:39 +01:00
Horst Schirmeier cae6860e4e generic-tracing typo
Change-Id: Ie642487f3c30ec2b99d0d4ee469acb6a987e17c3
2016-03-11 19:01:30 +01:00
Horst Schirmeier c0420987ea doc: library-dependency update
Change-Id: Id88552e2f6117548b0c94dd2f68a08650306a535
2016-02-12 12:27:52 +01:00
Horst Schirmeier 2c176715ed import-trace: code comments + --help clarifications
Change-Id: I796969f2dc8c7e440c9f9bd5434cbe09834057db
2016-01-29 18:06:41 +01:00
Horst Schirmeier fe5ccdf425 fixes for Debian 8 and newer AspectC++ versions
-  Debian 8 does not provide libsvga1-dev anymore, so Bochs cannot be
    built --with-svga (which is included in --with-all-libs).

 -  The latest AspectC++ nightlies should work without any
    -D__NO_MATH_INLINES -D__STRICT_ANSI__ tricks.

Change-Id: I56801a0735eb4922689dff812923d79faa94d26e
2016-01-09 17:02:51 +01:00
Horst Schirmeier f114944af9 COPYING 2016 updates
Change-Id: I29b40d9d80b13c3653ea5bec8b43191e2cf41454
2016-01-09 17:01:51 +01:00
Horst Schirmeier 9a7e07986b publication update
Change-Id: I6a8d32fc2739dc5dba817507321bd395684860aa
2015-11-14 15:41:56 +01:00
Horst Schirmeier d71db9211c DatabaseExperiment: fix headers
-  Add missing iomanip header: Without this one, Fail/gem5 does not
    compile.

 -  Remove unnecessary sal/bochs header: This seems to be a relic from
    when the DatabaseExperiment was Bochs-specific.

Change-Id: I91c991795c2c2e76359e9d11415f5119d225a4ab
2015-08-06 16:33:59 +02:00
Horst Schirmeier c069e87c6f gem5: adapt to changed SimulatorController iface
This quick fix is necessary to let gem5 compile again.  Instead of passing
NULL to onInterrupt(), a proper fix should pass the currently active
ConcreteCPU instance.

Change-Id: Ie4322fd98cb7b12309a21a2dd431f9bdc84efaf8
2015-08-06 16:33:19 +02:00
Horst Schirmeier 6ae7c6becc doc: clarify gem5 build configuration
Change-Id: I53d0931e28fa70438a3b8c3ccb289730f0485e94
2015-08-06 16:33:19 +02:00
Horst Schirmeier 1d9dae0e21 bochs: translate virtual to linear addresses
This change makes MemoryAccessListeners deliver linear addresses
instead of virtual ones deprived of their segment selector.  Even in
modern operating systems, segment selectors are still used for, e.g.,
thread-local storage.

The hooks within MemAccess.ah could maybe be implemented in a simpler
and less fragile way using the BX_INSTR_LIN_ACCESS instrumentation
hook, but this needs more investigation.

Change-Id: I0cee6271d6812d0a29b3a24f34d605a327ced7da
2015-07-31 12:46:06 +02:00
Horst Schirmeier 32b11b35d8 publication update
Change-Id: I4070f0846ee04376e74ed39cfb37cc8b78763ddd
2015-07-23 23:41:51 +02:00
Horst Schirmeier 9424a2ead7 COPYING: +Hannes Weisbach
Change-Id: I6a6557e1cb2b01631bfdd0012d9608b06437f90b
2015-04-25 14:06:53 +02:00
Horst Schirmeier d38218f0eb DatabaseExperiment: remove Bochs dependency
Use the newly introduced SimulatorController::getCPUCount() instead of
BX_SMP_PROCESSORS to figure out the number of CPUs the back end provides.

Change-Id: I6d6521ae508154366ab5d0c23ddcb6f2de99aa04
2015-04-10 16:44:41 +02:00
Horst Schirmeier ae15ac704d add missing headers
This change adds some missing headers needed for compiling the
PandaBoard variant, which seems to not have seen a compiler for a
while.

Change-Id: Ifb54abb4dc676fafc29ecbae97bafaa547fcfc80
2015-04-10 16:43:13 +02:00
Horst Schirmeier 96fae94b1f DatabaseExperiment: fix wrong variable scope
This fixes a wrong variable scope introduced in commit 193e5b7,
breaking compilation.

Change-Id: I74194e9ea6e726bc0a7ce2ee5ad5439b7de87fba
2015-04-10 15:07:45 +02:00
Horst Schirmeier 374011986c Merge branch 'save-restore-behavior' 2015-04-08 17:45:40 +02:00
Horst Schirmeier b02831adc5 Merge branch 'authors-update' 2015-04-08 17:42:51 +02:00
Horst Schirmeier e59918b6df more papers using Fail*
Change-Id: I9737c3304dfa5e265786cd2bab5d59ab282fc25a
2015-04-01 13:59:17 +02:00
Horst Schirmeier 193e5b757e adapt experiments to new restore() behavior
This change adapts several experiments, including the
DatabaseExperiment framework, to the restore() behavior update from
the previous change.  Existing traces should continue to be usable.

This is not tested yet, mainly because I don't have access to most of
the experiment targets / guest systems necessary for testing.  Please
test your own experiments if possible, or at least leave me a note
that you couldn't test it!

Especially the cored-voter/experiment.cc update may be broken, but
maybe the "FISHY" +2 in there was not OK in the first place.

Change-Id: I0c5daeabc8fe6ce0c3ce3e7e13d02195f41340ad
2015-03-18 18:22:21 +01:00
Horst Schirmeier 91a9c6f688 core/sal: restore() more reliable for bochs
BochsController::restore() now recreates a state more expectable from
the experiment.  The state is now the same that save() leaves behind
in its most prominent use case after hitting a breakpoint.  This
change breaks backwards compatibility with some experiments, see
below!

Right after a breakpoint on a specific address fired and
BochsController::save() was called, another breakpoint on that
specific address would not fire again (unless that instruction is
executed again later on).

Up to this change, the situation after calling
BochsController::restore() was different:  A breakpoint on that
specific address would fire twice.  This difference led to the problem
that running the tracing plugin after save() would work fine
(recording the current instruction once, since 3dc752c "tracing: fix
loss of first dynamic instruction"), but running it after restore()
would record the current instruction *twice*.

This change aligns restore()'s behavior to that of save().  The
implications for existing experiments, traces and results are:

 -  Existing result data should be not affected at all, as
    trace.time1/time2 were correct before this change.  Nevertheless,
    the assumption time2-time1 >= instr2-instr1 does not hold for
    equivalence classes including the first instruction, if the latter
    was faultily recorded twice (see below).

 -  Existing traces that were recorded after a restore() (with a
    tracing plugin including the aforementioned commit 3dc752c)
    contain the first instruction twice.  An affected trace can be
    corrected with this command line:

      dump-trace old.tc | tail -n +2 | convert-trace -f dump -t new.tc

 -  For experiments that record traces after a restore() (such as
    ecos_kernel_test), nothing changes, as both the tracing and the
    fast-forwarding before the fault injection now see one instruction
    event less.

 -  Experiments that record traces after a save(), especially those
    that rely on the generic-tracing experiment for tracing, now see
    one instruction event less, before they need to inject their
    fault.  These experiments need to be adjusted, for example
    dciao-kernelstructs now should use bp.setCounter(injection_instr)
    instead of bp.setCounter(injection_instr+1).

Change-Id: I913bed9f1cad91ed3025f610024d62cfc2b9b11b
2015-03-06 08:38:40 +01:00
Horst Schirmeier bd5802e5d7 core/sal: allow repeating BochsController::save
BochsController::save() now can in principle be called multiple times
in a row.  Not that this would really make sense, but the results are
consistent now.

Change-Id: Ib4c6eb571a364b0f7ea6142c8cfec004a12f98b3
2015-03-06 08:38:40 +01:00
Horst Schirmeier d2899e8db7 core/sal: silence "unused function" warning
BochsHelpers.hpp is included by some aspect headers, which are implicitly
included into many (all?) translation units.  As in most TUs the "static
inline" defined getCPU function is not used, every time a "unused function"
warning was generated.

Change-Id: Ibb903fe7a11aaf1f455a626c8bf8b86f50857645
2015-02-09 11:02:40 +01:00
Horst Schirmeier 8973f65a50 util: don't leak resources from SumTree
This fixes the resource-leaking "should never happen" case when no
element is found by returning a notfound member.  Found by Coverity
Scan, CID 25555.

Change-Id: I9055ae0a3b31e61f3a8e3b098ec5613c3b5535f6
2015-02-07 18:20:40 +01:00
Horst Schirmeier 0fce4f435c tracing: fix "IP only" tracing
Only tracing the instruction pointer was broken, memory accesses were
always traced additionally.  Found by Coverity Scan, CID 25495.

Change-Id: Ideb66175865c85bcd48f4b3786d5d8f16810d4f1
2015-02-07 18:20:39 +01:00
Horst Schirmeier 48423054b0 prune-trace: check 2nd cmd.parse() return value
As the first cmd.parse() call was already checked before, parsing a
second time should never fail.  Nevertheless, we can look at the
return value without much effort.  Found by Coverity Scan, CID 25494.

Change-Id: Id012cf7183fe7b2022d33e6cbcb19ba49b544c99
2015-02-07 18:20:39 +01:00
Horst Schirmeier 6a0214b132 ProtoStream: member variable -> local var
The contained state is not used over function boundaries anyways.
Found by Coverity Scan, CID 25689.

Change-Id: I34e42c227710be4859f6d62de9311c4201ed29b0
2015-02-07 18:20:39 +01:00
Horst Schirmeier e99e4aafa8 JobServer: initialize sockaddr_in
This most probably is not a real problem, but does not take much work
to fix.  Found by Coverity Scan, in several reports.

Change-Id: I8bd12e3f7afeb4b1c4e1b057bdbd95da9aa9211c
2015-02-07 18:20:39 +01:00
Horst Schirmeier 8c2b6cf028 JobServer: fix socket leaks
Found by Coverity Scan, CID 25600.

Change-Id: Ic0c549928ce8058c145d178ed06b41b543676460
2015-02-07 18:20:30 +01:00
Horst Schirmeier b01a5e80fd import-trace: initialize all members
This was never a real problem, but keeps us on the safe side.  Found
by Coverity Scan, CID 25731/25808/25817.

Change-Id: Ie4bd9fb52ff6140ce7ae024738b43c82f6f5045c
2015-02-07 17:29:53 +01:00
Horst Schirmeier 41a191eeaa import-trace: fix SQL value list termination
This fixes the (never intendedly occurring) case that no comma is
found in the SQL value list, and aligns the termination code with the
comment next to it.  Found by Coverity Scan, CID 25653.

Change-Id: I98062748458a50603cd63a9017acd94eef0753f9
2015-02-07 17:29:52 +01:00
Horst Schirmeier 8e5cd0d632 import-trace: check 2nd cmd.parse() return value
As the first cmd.parse() call was already checked before, parsing a
second time should never fail.  Nevertheless, we can look at the
return value without much effort.  Found by Coverity Scan, CID 25509.

Change-Id: I58466f5d123da2b541a6a88b72bafa1f754a581e
2015-02-07 17:29:50 +01:00
Horst Schirmeier 2c6aa6cd37 ElfReader: fix conditional free
buff cannot be zero.  Found by Coverity Scan, CID 25712.

Change-Id: Ibb411be376aab13832e3e5593fe001df1cbfc051
2015-02-07 17:29:48 +01:00
Horst Schirmeier 975d4de90d ecos: detect potential ftell failure
ftell() potentially fails and returns -1.  Found by Coverity Scan,
CID 25546.

Change-Id: Ifcf6fa8593cb1f3f54dbbff27ac021d46468a40c
2015-02-07 17:29:46 +01:00
Horst Schirmeier a19eb6db74 DwarfReader: fix premature fd close
When Richard decided we need not yet give up when dwarf_srclines()
fails, he left a -- now premature -- close(fd) behind.  Found by
Coverity Scan, CID 25806.

Change-Id: I0bc0cb6796225c9efaf5290e2799b6814f88e5b4
2015-02-07 17:29:44 +01:00
Horst Schirmeier 0e305034e9 Disassembler: restore ostream state after changing it
Found by Coverity Scan, CID 25679.

Change-Id: Ia0c175cd79ddc42ab9154c667db0d647618e41e2
2015-02-07 17:29:42 +01:00
Horst Schirmeier 141cefbaf4 DatabaseProtobufAdapter: remove unused struct field
Found by Coverity Scan, CID 25685.

Change-Id: Id7c9d756a7f824af41d1315740f7415f021eaa91
2015-02-07 17:29:41 +01:00
Horst Schirmeier c499292e2f DatabaseProtobufAdapter: init top-level type bridge
Found by Coverity Scan, CID 25724.

Change-Id: I30ab9251bd0b6c60a64075a5cf934f40874a7c6c
2015-02-07 17:29:40 +01:00
Horst Schirmeier 26076d070c DatabaseProtobufAdapter: fix uninitialized members
Found by Coverity Scan, CID 25694.

Change-Id: I8fbb1434b73dcecb16675da870e73f1ad39391e4
2015-02-07 17:29:38 +01:00
Horst Schirmeier 0047919644 Database: fix tmp array deletion
Found by Coverity Scan, CID 25544.

Change-Id: Iaf0866ebd4a458fabfe79336d8c8b639e42147c5
2015-02-07 17:29:37 +01:00
Horst Schirmeier cf6b481d5e DatabaseExperiment: fix uninitialized variable
Found by Coverity Scan, CID 25741.

Change-Id: I6105fe76afbfe0a6ec76b59778214683d7d754e2
2015-02-07 17:29:35 +01:00
Horst Schirmeier a7184af37b core/sal: uninitialized BochsController member
False positive, nevertheless worth fixing.  Found by Coverity Scan,
CID 25723.

Change-Id: Ia4f1eb033d7cc8c20889280a59d8973ecf768933
2015-02-07 17:29:34 +01:00
Horst Schirmeier 61038c2578 core/sal: fix CPUState bracing error
This is why our coding style suggests braces even for single-line "if"
or loop bodies.  Found by Coverity Scan, CID 25767.

Change-Id: I53062286accba7c0fc9795ecea0a5e2795443321
2015-02-07 17:29:32 +01:00
Horst Schirmeier fe9e25374a CampaignManager: initialize campaign member
Found by Coverity Scan, CID 25798.

Change-Id: Ib310ca3198c78a8e01d044d90ada1cd0c22b26d6
2015-02-07 17:29:29 +01:00
Horst Schirmeier bae03bc929 cmake: build with -D__NO_MATH_INLINES
To use the new clang-based AspectC++ (ac++ >1.2), Fail* must be built
with -D__NO_MATH_INLINES (or --c_compiler clang++).

Change-Id: I020d62891946d09ac456b8df914b669ab33ab0e2
2015-02-05 17:25:09 +01:00
Horst Schirmeier 6995dffca8 prune-trace: --no-weighting for SamplingPruner
Analogous to the FESamplingPruner, the --no-weighting switch disables the
equivalence-class weighting by using a weight of one instead of the
equivalence-class size.  This is usually not a good idea, and should only
be used for demonstration purposes, or if the fault model requires
weight-less sampling.

The --no-weighting switch was introduced with an earlier commit, but
did not have an effect until now.

Change-Id: If2ebf775bea7f2e3f8c293abbae08f1eb00cacf1
2015-02-02 13:50:59 +01:00
Horst Schirmeier 1dcd4fbeb2 fail-cleanup-db.sh: cleanup "symbol" table as well
(The "symbol" is currently only created by some inofficial scripts,
but may become part of the Fail* core at some point.)

Change-Id: If0b3e6cdd6b6ca865abb67382de128e7a27f19ab
2015-01-30 13:28:33 +01:00
Horst Schirmeier b8c03bca8d fail-env: assign -> use default values
In bash, ${parameter:=word} assigns the default value.  In our case,
${parameter:-word} (the whole expression has a default value, but it's
not assigned) suffices.

Change-Id: I5f4105b973892aa13943d660cbebaed76fd43752
2015-01-29 16:43:22 +01:00
Horst Schirmeier add9b80a1a copyright update for 2015
Change-Id: I001d03c09fe13ef5b5783620bfa3fd160b9c475c
2015-01-23 15:30:56 +01:00
Horst Schirmeier 412ecbba63 dbcampaign: skip existing pilots with wrong fspmethod
Loading existing pilots with a different fspmethod_id is a waste of
time.

Change-Id: I3519a14822029999fa2ed854daff9853c0cbeec1
2015-01-21 14:53:33 +01:00
Horst Schirmeier d58694521c dbcampaign: don't include fspmethod/variant ID in job msg
These IDs don't make sense by themselves but only after a lookup in the
database, which clients usually don't have (and don't need) access to.

Conflicts:
	src/core/comm/DatabaseCampaignMessage.proto.in

Change-Id: Ice739463552039b7fb48581722ea2e05984cea47
2015-01-21 14:53:32 +01:00
Horst Schirmeier c422911741 dbcampaign: allow wildcard for prune method
Using mixed pruning methods now does not require to run the campaign
server twice anymore.

Change-Id: I3f62c269166b750892bb0e659ad0c180425d1479
2015-01-21 14:53:32 +01:00
Horst Schirmeier 336ffd6453 Merge branch 'sampling'
Change-Id: Id6be7954b0bafcbfd64ba702e69e016bd2810115
2015-01-21 14:53:28 +01:00
Horst Schirmeier 39df0a979e Merge branch 'listener-perf-bug'
Change-Id: Ia863115ec31011ad2b7a954543c8ee64188d3d32
2015-01-21 14:52:33 +01:00
Horst Schirmeier 4cbcf30b7c prune-trace: incremental mode for SamplingPruner
The --incremental switch allows to add more samples if the resulting
confidence intervals are not satisfactory yet.

Change-Id: I65dc99522f45f8a4eaf4ce68e832f7636585381d
2015-01-21 00:22:36 +01:00
Horst Schirmeier 79211fd31d prune-trace: add SamplingPruner
The SamplingPruner implements "normal" sampling with equivalence-class
reuse.  Unlike the FESamplingPruner, the SamplingPruner implements
uniform fault-space sampling that counts multiple hits of an
equivalence class.

This change modifies the database schema, more specifically it adds
the "weight" column to the fspgroup table.  Update existing databases
with this query:

  ALTER TABLE fspgroup ADD COLUMN weight INT UNSIGNED;

Change-Id: I668fc9b25fc4d79a60aa1ef8d69cdf5fa076cc6d
2015-01-21 00:22:36 +01:00
Horst Schirmeier 99a923b11e Merge remote-tracking branch 'origin/master' into sampling-wip
Change-Id: Iae5c02be5801d75e8adc55222ccb35c559f7ebf4
2015-01-21 00:22:28 +01:00
Horst Schirmeier f8e0f1bb3f util: add SumTree::iterator
Change-Id: I8304b64634fa3ab92a126fe5d942674b26334b3d
2015-01-21 00:17:48 +01:00
Horst Schirmeier 2f70e05db6 util: rename SumTree::get -> remove, add r/o get
SumTree::get now non-intrusively picks an element and returns a
reference to it, SumTree::remove removes and returns a copy.  The
former is needed for sampling with replacement.

Change-Id: Iefef2fdf0b7df6ea7a9949f2588528ec9e86bb7a
2015-01-21 00:17:48 +01:00
Horst Schirmeier b2b53380f4 prune-trace: add switch to disable sample weighting
In the sampling step, the --no-weighting switch disables the
equivalence-class weighting by using a weight of one instead of the
equivalence-class size.  This is usually not a good idea, and should
only be used for demonstration purposes, or if the fault model
requires weight-less sampling.

Change-Id: Id903d1924c6ecbcd217815aa5ce9271560130071
2015-01-21 00:14:45 +01:00
Horst Schirmeier a1e3b31cd5 prune-trace: sample from known results
The --use-known-results switch simulates sampling (with fault
expansion, FESamplingPruner) by reusing results from a previous
campaign covering the full fault space (that used the "basic" pruner).
The pruner only creates entries in the "fspgroup" table that refer to
already existing pilots and corresponding results.

This switch is not for normal Fail* use, but only for experimenting
with the FESamplingPruner.

Change-Id: I1bf561d93f55918d243c5306551a1c6b48027198
2015-01-21 00:09:37 +01:00
Horst Schirmeier d9028e9d70 CMake: Fail* version number handling fixed
The project version number is now not user-editable anymore, and
custom values get overwritten by force.  Without this change,
CMakeCache.txt stays at the version number it was first instantiated
from.

Change-Id: If9ad1549937dad98db9a0f0eda16ef752e7d74aa
2015-01-14 10:27:20 +01:00
Horst SchirmeierandGerrit Code Review fd6bd279ad Merge "util/DwarfReader: plug file-descriptor leaks" 2015-01-14 10:27:01 +01:00
Horst Schirmeier a00c4d9a69 util/DwarfReader: plug file-descriptor leaks
This change fixes several file-descriptor leaks in the DwarfReader
implementation.  The patch is taken from Richard Hellwig's not yet
merged change I161f626d12ca7f2b7b9d13ba9cbc254eb55692f1.  I did not
apply any white-space cleanups to prevent conflicts when Richard's
change will be merged later.

Change-Id: Icd9c1bdeeab39e77900e2ce88b756a8cf7ade96a
2015-01-14 10:15:29 +01:00
Horst Schirmeier d68ea990ca sal: catch listener removal corner case
This change makes sure an active but not-yet fired listener does not fire
anymore if it gets removed.  In this case, the listener already has an
invalid index, but still needs to be copied to the delete list.

This issue has not been observed in the wild, and is unlikely to have
caused real problems in the past.

Change-Id: I8be8a5b1d4cdc783a092b93f34f33b969894e5da
2015-01-13 19:22:49 +01:00
Horst Schirmeier c4d44aeb0c sal: fix watch/breakpoint perf implementation
This commit changes the entities in a ResultSet from listener indexes
(into ListenerManagers m_BufferList) to BaseListener pointers, as
ListenerManager::makeActive(BaseListener*) (called from
FastBreakpoints/Watchpoints.ah) may invalidate indexes temporarily
stored in a ResultSet.  The issue occurs when multiple breakpoints
(watchpoints) fire at the same time, and one added more recently than
the others occupies the largest index position in m_BufferList.

Although this issue is extremely rare and was only observed in a few
corner cases up to now, it may have falsified results in the past.

Change-Id: I7b788a06d412f15700ca75f56f2be5d3b78465fa
2015-01-13 19:22:49 +01:00
Horst Schirmeier 32e8a679b5 CMake: Fail* version number handling fixed
The project version number is now not user-editable anymore, and
custom values get overwritten by force.  Without this change,
CMakeCache.txt stays at the version number it was first instantiated
from.

Change-Id: If9ad1549937dad98db9a0f0eda16ef752e7d74aa
2015-01-13 14:48:22 +01:00
Horst Schirmeier 722715c01f fail-cleanup-db.sh: cleanup unused DB entries
This script removes dangling rows from the database, for example
'trace' entries with a variant_id not mentioned in the 'variants'
table, or result rows referencing a nonexistent 'fsppilot' entry.
IOW, this script enforces referential integrity as it would be
maintained by foreign key constraints (that can only be used with
InnoDB tables).

Change-Id: I4dce1e46277d470f8c3eca31447ca71f63c6353f
2015-01-12 16:45:38 +01:00
Horst Schirmeier 80da913264 README: publications update
Change-Id: I4794dbba1e1fc28398bd040a5ffbc4ff821e5a6c
2015-01-11 18:47:37 +01:00
Horst Schirmeier 88dff29415 Merge branch 'visualfail' 2015-01-10 00:49:52 +01:00
Horst Schirmeier 62c3cc7f20 visualfail: README, pristine configuration
Change-Id: Ic7e3ec0e28fdd368b9207c7a843a3f397e5e3c09
2015-01-09 15:00:03 +01:00
Horst Schirmeier f0a4dacd87 visualfail: remove common path prefix from file names
Change-Id: I5806f0e4ca3ebe4e9aae3423e04d8ffb36fff2a6
2015-01-09 15:00:03 +01:00
Horst Schirmeier be6e4e687c visualfail: indentation fixes
Change-Id: Icac5dcf43ae28fa877a7127495066f4d48186b7e
2015-01-09 15:00:02 +01:00