Commit Graph

1058 Commits

Author SHA1 Message Date
62c3cc7f20 visualfail: README, pristine configuration
Change-Id: Ic7e3ec0e28fdd368b9207c7a843a3f397e5e3c09
2015-01-09 15:00:03 +01:00
f0a4dacd87 visualfail: remove common path prefix from file names
Change-Id: I5806f0e4ca3ebe4e9aae3423e04d8ffb36fff2a6
2015-01-09 15:00:03 +01:00
be6e4e687c visualfail: indentation fixes
Change-Id: Icac5dcf43ae28fa877a7127495066f4d48186b7e
2015-01-09 15:00:02 +01:00
4d070c6362 visualfail: collapse repeating instructions
Change-Id: I7d3bbb9eb79b502acabeeeab9886bf20177e68c6
2015-01-08 16:24:53 +01:00
957f9c9357 visualfail: high-level code mapping fixes and cleanups
Now high-level to low-level code mapping seems to be right for the first
time.

Change-Id: I3c6a7cfdf3f3e4da32420a74280ae4ae042acc09
2015-01-08 15:06:58 +01:00
d536cc72aa visualfail: less duplicate HTML IDs
... and a lot less unneeded IDs, reducing the amount of data to be
transferred to the client.

Change-Id: I071920fd4d8039d2f3d1f5d8c41c2c3ddd639617
2015-01-08 15:06:58 +01:00
874e5881b7 visualfail: disable JS debugging output
Change-Id: I8154aa182189ce88716d157aa41cbe2680f0eab8
2015-01-08 15:06:58 +01:00
2ae7e87abc visualfail: HTML output cleanups
Change-Id: Ibe966e8ece80f0f40f2f109d78a59f4ebe0121a6
2015-01-08 15:06:58 +01:00
38641ff34b visualfail: silence redundant notice
Change-Id: Ib6a71474727fd64d4057db026eb0e90e603947a0
2015-01-08 15:06:58 +01:00
aebe801dbf visualfail: query parameter name consistency
Consistently use 'variant_id' instead of 'variant'.

Change-Id: I93f054634698855687e3ba07b83173c8370297fd
2015-01-08 15:06:58 +01:00
c2b4a4fa8a visualfail: English interface
Change-Id: I4ebe88ce8621bcef30d84065b8e6525239283863
2015-01-08 15:06:58 +01:00
b5c261d762 visualfail: comments, whitespace fixes
Change-Id: I8821b43d7402e19c59810692ed7877bca4cec6f5
2015-01-08 15:06:58 +01:00
7c51ca0a63 visualfail: fix color coding
Change-Id: If76d8e9f7a22523868ea6977db5c0f58a0576224
2015-01-06 17:11:29 +01:00
2d2e477ddc visualfail: fix output formatting
This change fixes occasional redundant newlines in interspersed
ASM/highlevel code.

Change-Id: Ibe3a93d67bc017ce44c832c4948f3817d8f7e695
2015-01-06 17:11:29 +01:00
9df01a4a48 visualfail: off-by-one in getHighlevelCode()
This one omitted mappings to the first static instruction belonging to a
high-level source-code line.

Change-Id: I14427021e61f27a8b029fb56fad2ba813652422a
2015-01-06 17:11:29 +01:00
1faa885cb4 visualfail: speedup of two MySQL queries
Change-Id: Ibc4339cfe31a7d9f2a632a7e08278f8aca554a73
2015-01-06 17:11:29 +01:00
63670e7bce visualfail: off-by-one in resultsDB()
This one was responsible for a lot of notices in the terminal.

Change-Id: I097705af15d771d0dcb5a217445fec3db89fd132
2015-01-06 16:38:47 +01:00
42773e2be5 visualfail: speedup by using the ".=" operator
Using "$x .= $y" instead of "$x = $x . $y" is actually an extreme
speedup for long $x.  I had no idea PHP's "compiler" was that bad and
doesn't optimize this.

Change-Id: I39aec5f14f45b75a2467d8074b5ea2ffe5d4b856
2015-01-06 16:37:21 +01:00
fc8ad04db2 visualfail: increase default runtime limit to 10m
Change-Id: I9bdebb2ad0e4fd6cf0d5e72e2e0520ad3cf6b258
2015-01-06 16:37:15 +01:00
4575da411a visualfail: quote string array indexes
Change-Id: I943c931f256986b4c14e00ee278976d369c71765
2015-01-06 16:37:07 +01:00
9a34d7a78a visualfail: comment out checks for unneeded tables
The dbg_methods, dbg_variables and dbg_stacktrace tables are not
needed by the current VisualFAIL implementation.

Change-Id: I5f685c7d8100fe57fb2a23e1f8161770e64c9464
2015-01-06 16:37:01 +01:00
0ed1a4e306 visualfail: don't close MySQL connection too early
Luckily this didn't work as advertised, as the global connection
variable wasn't imported into the functions' scopes.

Change-Id: I080a32c6418deb3da3578987ec8a181b047608ad
2015-01-06 16:36:56 +01:00
1d81e2b519 visualfail: adminer should not be in the Fail* tree
Change-Id: Ib7f07306e297f8891666b54916e8076c0c9261ee
2015-01-06 16:36:50 +01:00
5bef0d4182 visualfail: whitespace cleanups
Change-Id: Ia773bf516ce1bab4adcd80e31678bda278cd8c11
2015-01-06 16:36:46 +01:00
ca99aee02b visualfail: removed trailing whitespace
Change-Id: I47725e1e4ca858109ffb0c3f7c599b67a48c0761
2015-01-06 16:36:38 +01:00
1d66db3625 visualfail: UNIX line endings
Change-Id: I5d26ec25d070e98b977ff3130c597a388a4c2c96
2015-01-06 16:36:20 +01:00
ea4c350bcc VisualFAIL beta ;)
Change-Id: Ia40fe09cdf520926d00b9c39c983c925099501bc
2014-04-07 12:22:33 +02:00
11f77f0228 tools/import-trace: FullTraceImporter added
The FullTraceImporter imports every ip-event into the database.

Change-Id: I1c0ce2a0aae72dcd925930861780f2719d37b985
2014-04-05 16:57:13 +02:00
ba774a258c util/llvmdisassembler: fix section end symbols
Somehow, while iterating symbols in a section, it can happen that the last
symbol start address is equal to the section size, which means it is beyond
the section end.
In this case the LLVM getInstruction() method does not return a failure, but a
zero-size instruction, resulting in an infinite loop.

Now, if beyond section limits, the iteration is aborted.
Additionally, an assertion checks for disassembled zero-size instructions.

Change-Id: Id8a355475161150d3ee919cd6cf603d4ff26b228
2014-04-03 15:02:57 +02:00
940fa6035d ecos: record simulated runtime
As the eCos kernel tests do not sufficiently check for failures, a
(compared to the golden run) measurably *reduced* simulation time can be
used as an indication for SDC.

Change-Id: I303f6c3f7ef56cb691c1f226eff74d113dd16629
2014-04-03 14:45:46 +02:00
442069dd45 cmake: added missing link-time dependency cpn->util
(for synchronized queue implementations)

Change-Id: I7b32273b8e76a7b7921af117fdf3ca5af2f42553
2014-04-02 10:43:48 +02:00
7694195f1b cmake: added missing link-time dependency efw->util
Change-Id: Iea812ed881f67e452827a718a52517c7328b0729
2014-04-01 16:15:58 +02:00
5378620b63 core/sal: fix warning for 32-bit Bochs
warning: unused variable ‘regdata’

Change-Id: I2b5b0ab7d920dc060ec814494e9817f1f49496a9
2014-03-26 17:47:42 +01:00
ba60ecc4e6 core/sal: comment typos
Change-Id: I9ac66d7d1afa22dc6645433736e1c1d38a4e23fa
2014-03-26 17:47:37 +01:00
136d397a52 core/sal: identical register IDs for 32 and 64 bit
With this change, x86 special-purpose registers (e.g., EFLAGS) get the
same register ID in both 32 bit and 64 bit configurations.

Change-Id: I69db9397481414f99ca05ecb0ea9dc8ab7d989c9
2014-03-26 17:47:25 +01:00
1ad2eb5110 core/sal: fix x86 register IDs for x86_64
This bug mapped EFLAGS to the same Fail* register ID as R9 on x86_64.  This
probably has not had consequences yet, as most FailBochs users use 32-bit
code.

Change-Id: I00a680675bb9e73c2781276f3ef651162c8e4445
2014-03-26 17:27:18 +01:00
84a03b55ff import-trace: limit to general-purpose registers
This change limits fault injection to general-purpose registers, instead of
relying on the LLVM/Fail* bridge to only recognize the status register
(EFLAGS on x86) and general-purpose registers.  Since this bridge just
learned to translate x86's control and segment registers, and these
registers need special handling for fault injection (def/use pruning does
not work here), only import register accesses from the RT_GP subset.

Status register and instruction pointer injection remain functional, and
import-trace now should work architecture independently.

Change-Id: Id8ad2f0a9dab1861bf16ea9443c3bdfe7213d3fa
2014-03-26 17:18:18 +01:00
fb788ce33e Merge "util/llvmdisassembler: map registers by names" 2014-03-26 16:45:19 +01:00
48002c81f8 Merge "core/sal: add x86 control and segment registers" 2014-03-26 16:45:11 +01:00
0acfe5b2e2 TracingPlugin: cap size of memory access to 8
There are instruction in the real world, that seem to read more than 8 bytes.
Therefore we cap the accesses memory to 8 and don't abort with an assertion.

Change-Id: Ib2bfd0ac6dc0c030cd6a22940e31f8463a3337cf
2014-03-26 14:54:17 +01:00
0799e52fde util/llvmdisassembler: map registers by names
Internal LLVM register IDs can and did change between LLVM versions.
These magic integers are replaced by iterating over all LLVM registers
and mapping them to FAIL* registers by name.
As this iteration requires a LLVM object created from a binary, a static
convenience function is added to LLVMtoFailTranslator which creates a
translator given the binary filename. Building this functionality inside
libfail-llvmdisassembler prevents experiments from needing to add LLVM
includes and library definitions.

Change-Id: I27927f40d5cb6d9a22bb2caf21ca2450f6bcb0b8
2014-03-24 15:01:09 +01:00
21f5f681e0 core/sal: add x86 control and segment registers
new register type RT_CONTROL:
CR0, CR2, CR3, CR4

new register type RT_SEGMENT:
CS, DS, ES, FS, GS, SS

Reading/writing is mostly untested except for CR3...

Change-Id: I0d0fba4a1669153ab2577e82ab64a04cf2bbfb94
2014-03-24 14:32:54 +01:00
396e00ce59 cmake: static library dependencies
CMake does not support linker groups, which were used to "automatically"
fix circular dependencies between different static FAIL* libraries and
the ordering of dynamic external libraries broke linking.
CMake can however correctly invoke the linker if dependencies are decribed
correctly (even if circular). This required changing all add_dependencies
calls between libraries to target_link_libraries (which creates a link-time
dependency) and linking all experiments to fail-sal.

Change-Id: I3a0d5dddb9b3d963ef538814e20d6b3de85d4ec5
2014-03-24 11:47:46 +01:00
3cf2fa082f Merge "DatabaseCampaign: experiment completion checks" 2014-03-24 11:45:20 +01:00
858afe6e6f Merge "DatabaseCampaign: fix finished experiments SQL" 2014-03-24 11:45:10 +01:00
5567c595fb DatabaseCampaign: experiment completion checks
If the queue for outbound jobs is not unlimited, experiment rows are fetched
from the DB server continuously as experiments finish. When this takes too
long the connection to the DB server can be lost. The code did not check for
a mysql_error and assumed the result set was fetched completely, thus skipping
a potentially large amount of experiments (in our case only ~20000 of 400000+
experiments were run).

This change adds checks to determine if the result fetch loop was finished due
to an error and checks the sent pilot count to the unfinished experiment count.
Additionally, the mysql result object is correctly freed.

The underlying problem of MySQL connection loss can hopefully be prevented by
increasing timeouts in the MySQL config as described in doc/how-to-build.txt.
To prevent the problem from occurring when this is forgotten, this change
reverts the default job queue length to be unlimited (SERVER_OUT_QUEUE_SIZE=0),
at the cost of increased memory usage.

Change-Id: I09d9faddd8190c6dd5fbe733a0679a733d5837ec
2014-03-21 11:36:38 +01:00
b7ff284d54 generic-tracing: add configuration dependencies
Added hint: Use /dev/null if no state is required

Change-Id: I76a935f88e6a7a8f707970797d508dad3a961ab5
2014-03-20 10:59:45 +01:00
010d4a892d DatabaseCampaign: fix finished experiments SQL
The database queries to fetch all unfinished experiments were broken.
The server tried to insert all finished pilot_ids into the temporary
result_ids table and then discard all experiments which have the correct
(finished) count of IDs in this table. This cannot work as the pilot_id
is the only column of result_ids and must be a unique primary key.

As a fix, the count of results is stored as a second field in result_ids
and the result table is now joined against result_ids to check this field.

Change-Id: I6a9fb774825f0cc4ce104c6e51d7b2fe16957aec
2014-03-18 11:18:27 +01:00
f775c92d72 dump-trace: keep track of read/written bytes
This change adds access-size tracking to dump-trace and output thereof in mode "-s".

Change-Id: I5647d7b16c89499b7813faaf8c3844f275bc552a
2014-03-05 11:55:11 +01:00
9df6d983bf util/llvmdisassembler: compile with -fno-rtti
For some reason, this is required even when LLVM is not built using
-fno-rtti.

Change-Id: I992799c8b54135a0a87b2de7c4a3d57f2d3670d9
2014-02-26 14:46:23 +01:00