Commit Graph

112 Commits

Author SHA1 Message Date
9272c5cbed Move JobClient to Boost::asio as well
I did this mainly so server and client use a common networking API
IMO, using Boost::asio results in nicer name-lookup code.
Since no longer needed, I removed the SocketComm stuff.
The client is still synchronous; I see no benefit in having it
asynchronous.

I'm not super happy with the random backoff by the clients, if they
can't connect to the server. It makes the code really messy, 3 retries
is totally arbitrary, as is the backup windows. I believe launching
the server and clients in the correct order should be handled by a
launch script
Change-Id: Ifea64919fc228aa530c90449686f51bf63eb70e7
2018-05-09 17:41:52 +02:00
3ad42e270c fixes for Debian 9
- search for libdwarf.h in new locations (e.g., /usr/include/libdwarf/)
- build Bochs with -std=gnu++98 (gnu++14 is default since GCC 6.1)
- specify "proto2" syntax for protobuf messages
- minor build-system and C++ namespace fixes

Change-Id: I16dbc622c797ef8e936fe3c0fb9b03029d27529d
2017-08-01 14:12:03 +02:00
d3d2faf680 globally rename Fail* to FAIL*
Change-Id: Ief2cb687cc69dd92c2e04f9314f0f1347e0a84ed
2016-07-26 17:41:32 +02:00
246938d4a6 l4-sys: Enable FI in all config cases
Fix the problem that injection was never enabled if func_entry == filter_entry.

Change-Id: Ifec64b6d1351e0857e568ca132cfed891f85aa62
2015-07-29 19:09:32 +02:00
a198eda8c8 Merge branch 'tobias' Apply Code cleanup and restructuring with new config file to main branch. 2014-06-30 15:01:45 +02:00
820a57a3a1 Update documentation and fix typo 2014-06-20 15:09:42 +02:00
329e5571ad Add config parameter to specify the hostname or ip addr. of the campain server.
Add some documentiation to experiment.hpp
2014-06-19 19:23:46 +02:00
a20d3cd12f exchange experimentInfo.hpp by experiment.conf which is know paresd during
runtime (no recompile anymore)
2014-06-19 19:13:33 +02:00
074eeab399 Code cleanup remove non-intruction-filtering part which is unused and broken 2014-06-17 17:07:17 +02:00
15c7a863e9 Enhance campain to use parameters. Now we need to add the parameter
--tpye to chosse between memory and register injection.
2014-06-17 12:44:58 +02:00
43b8c2351c More code cleanup 2014-06-16 14:08:08 +02:00
57c5fbf862 Bugfix for last commit 2014-06-13 21:37:26 +02:00
350f6bb680 Code Restructuring. 2014-06-13 21:08:36 +02:00
191b14c0e6 Enhancd experiment to accept config parameters. Combine all prep steps as well as the
final example in one binary. Use parameter prep to specify what you would like to do.
2014-06-13 20:39:40 +02:00
23d86aba5d Remove Injection functionallity which is currently broken and unused (fetchInstruction, logInjection, singleStep) 2014-06-11 18:06:12 +02:00
53dc6bbf36 Code cleanup 2014-06-11 11:04:03 +02:00
78a0d863a2 Expand Protocol for own Fail-Stop-Function 2014-06-11 10:54:26 +02:00
c827750090 Merge branch 'failpanda'
Conflicts:
	src/core/comm/DatabaseCampaignMessage.proto.in
	src/core/cpn/CMakeLists.txt
	src/core/cpn/DatabaseCampaign.cc
	src/core/sal/ConcreteCPU.hpp
	src/core/sal/SALConfig.hpp
	src/core/util/CMakeLists.txt

Change-Id: Id86b93d0e3ea4d9963fcc88605eec0603575ec83
2014-06-03 12:24:49 +02:00
f75c8613d8 experiments: use generated dbcampaign protobuf msg
Since commit c142818, DatabaseCampaignMessage.proto is generated into
the binary directory, which must be announced to the protobuf
compiler.

Change-Id: I0c3c4c6525df687012330573979dc897dfa8d701
2014-06-03 12:20:55 +02:00
0807d5d9f6 L4Sys: dependency fixes
Thanks Horst!

Change-Id: I7711c7353619fdfd414ecbc1c9899308fd437d7d
2014-04-23 15:39:45 +02: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
4cb97a7fa5 formatting, typos, comments, details
Change-Id: Iae5f1acb653a694622e9ac2bad93efcfca588f3a
2014-01-22 13:08:13 +01:00
122eb8c9dc use uint32 for addresses in protobuf msgs
This prevents integer overflows when using addresses > 2GiB, which are
common for x86 operating systems with paging (Linux, Fiasco.OC) or
some test cases on the PandaBoard.

Note that this results in slightly different result table definitions
when automatically translating an experiment's protobuf message in the
DatabaseCampaign.

This change affects all existing protobuf messages to prevent
copy/paste propagation of this issue.

Change-Id: I09ec4b9d45eddd67a7a24c8b101e8b2b258df5e2
2014-01-21 00:08:41 +01:00
84aac60a70 use libmysqlclient_r to ensure thread safety
According to
<http://dev.mysql.com/doc/refman/5.5/en/c-api-threaded-clients.html>,
(potentially) threaded clients should use the reentrant
libmysqlclient_r.  This is just a precaution, I haven't seen any
issues with the normal libmysqlclient.

Change-Id: Icb29df6dd54eb666e3b43b73fbda406acccd11cb
2014-01-20 18:34:51 +01:00
443b3e4919 L4Sys: termination shortcuts
Add two new breakpoints to L4Sys experiment that allow detecting that
execution terminated with an error: vga_console_blink() is called by the
kernel if JDB was entered (meaning we are hanging, e.g., due to an
assertion); also longjmp() is only used by PF handling code after no
valid page fault handling could be performed

Change-Id: Ice61039c4bd07815a316bbc0bdb39f3483d9a1da
2013-11-06 17:37:20 +01:00
d4f22a38ff L4Sys: EIP deviation tracking
* after injecting a fault, track how many instructions it takes until
  execution deviates from original execution
* also track what the first deviating EIP value is

Change-Id: I18a9250517ca90214728c2c4b036b412f5dbf224
2013-11-06 17:37:20 +01:00
3db5d034a2 InstructionFilter: make unused EIP a default 0 parameter
Change-Id: I972be71af70934eef98bc67b27e32a98ecb8be3b
2013-11-06 17:37:20 +01:00
a5866a68a2 add l4-sys ignore file
Change-Id: Iea2228d8bafc2a3ecb4b6e26e2552813821a3d0b
2013-11-06 17:37:19 +01:00
71170145e0 Adapt l4-sys experiment to importer fix
no need to decrement instruction offset before setting bp anymore

Change-Id: I7f9c02349663899fa8f496a46bcb357bd567ac5c
2013-11-06 17:37:19 +01:00
63610d0652 L4sys: build fix
experiment.hpp is parsed before l4sys.ph.h is generated
-> remove dependency

Change-Id: I128108e562877caca732ad43fdb65b12e56951f8
2013-11-06 17:37:19 +01:00
77b2e208d0 L4Sys Experiment: more on address space tracing
* introduce L4SYS_ADDRESS_SPACE_TRACE to indicate that we want
  to trace instructions in a different AS from the one we are starting
  the experiment in
* add CR3Run() to determine address space ID

Change-Id: I7bdaf1e858a6dd369af5175bd56e1b4e2d5f05ef
2013-10-21 15:28:07 +02:00
523f4a465b add injection address to results
Change-Id: I7966f97b8c09bbd6510ca6066dd40be398b54de3
2013-10-21 15:28:07 +02:00
014684ae1c L4Sys: check Bochs AS ID for mem accesses, too
Change-Id: Ifa2b38dc0e762ff4f956dc0b98c78b43f0d139cb
2013-09-12 20:29:08 +02:00
ff19bec52d L4Sys: some bug fixes
* Fowler's Law of Refactoring: Have test cases available.
* BjoernD's Corollary to Fowler's Law: Use these tests!

Change-Id: I3d3e48ffe08209891c6204655323cd26a0eaaebd
2013-09-12 18:19:04 +02:00
37eda90971 L4Sys campaign: GPRFLIP and MEM injections
Change-Id: I0c4a6bf6b80d6620c035595c11663121f504f4d5
2013-09-11 18:02:03 +02:00
b7d03f64d4 docs
Change-Id: Ic46dfc6c59c7bee796c2e3e8e97376859391b342
2013-09-11 18:02:03 +02:00
560860cb99 L4Sys: consult instruction list for breakpoints
Change-Id: Ic8163cc84bad9b0074a9d6489127d0ef09eb3c21
2013-09-11 18:02:03 +02:00
8caa63397a L4Sys: refactoring
* more more stuff into functions
* try to have generic experiment code only once

Change-Id: I4f037bd972243665a10941fcc3607f015b0bb1f9
2013-09-11 18:02:02 +02:00
0b2ab41c2f first working mem experiment
Change-Id: I928ee0c38f12f6dfe3f661ee60cccad11f35ad6a
2013-09-11 18:02:02 +02:00
20a9904032 start memory experiment
Change-Id: Ice7921a02f899c7381d15ead10b27e21df7019fb
2013-09-11 18:02:02 +02:00
32efc604e7 use MEM FI type
Change-Id: If149c4fdeaaf6fef96a99d6fe2a424d8ad0f2916
2013-09-11 18:02:02 +02:00
60bf0bae69 L4Sys: uhoh -> build fix
Change-Id: I9b3f9bdc961d03e49965230f9a5222d4103c94c5
2013-09-10 11:58:23 +02:00
0c0f19fbcb L4Sys: also trace memory accesses
Change-Id: I20d8fea1f0f6cfee42804296515e50fdabf12f81
2013-09-10 11:54:05 +02:00
1ca9cb4a52 L4Sys: adapt to DatabaseCampaign
Change-Id: Ia4912e7a74afccb51f6d704830a2d9c5b5c0159a
2013-08-30 16:06:15 +02:00
2a06b97480 Adjust instruction tracing
write a trace file that can be input to the *-trace FAIL tools

Change-Id: Iaa13fab5bcba86f3d940831d9ea583a458998191
2013-08-28 10:16:13 +02:00
6ddc7d911b the do-them-all campaign
Change-Id: I9c1617c4a057db63e2f2c6470b55d9629bd01ca2
2013-08-28 10:15:39 +02:00
674af5fd00 Separate boundaries for output tracing and injection
* L4SYS_FUNC_{ENTRY,EXIT} now determines the range upon
  which an experiment is run. These instructions produce the
  output that is relevant for the experiment.

* L4SYS_FILTER_{ENTRY,EXIT} determine a subset of the
  above instructions. FI experiments are performed on this
  subset (between first occurrence of FILTER_ENTRY and first
  occurrence of FILTER_EXIT inclusively).

Change-Id: I37d2189d8256b6b707a0a33984f2b2656071d983
2013-08-27 20:34:57 +02:00
10420938d2 Rework instruction filtering
Add a new instruction filter that allows filtering a list of
ranges read from a file. This allows us to specify multiple
ranges, e.g., to leave out instructions or to focus on multiple
functions

Change-Id: Iba13cda00d0a73edaef270b3cd9100afe3e4668b
2013-08-27 11:26:27 +02:00
1fefef06b0 warning fix
InstructionFilter needs virtual destructor (Effective C++, Item 14)

Change-Id: I52422c3e8ec1c40c93cb83a0591910837efb00b5
2013-08-27 10:06:33 +02:00
da7f9caf64 L4-sys refactoring
move preparation steps into separate functions

Change-Id: I4930ec38f003302596f215a08cd8bf455f525571
2013-08-27 10:02:38 +02:00