Compare commits
5 Commits
6ce8987ebd
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
9db4cb8bb1
|
|||
| 10fe608a90 | |||
|
2de6e20675
|
|||
|
bc98e2af5c
|
|||
|
3819e84acb
|
BIN
fail/bin/fail-x86-tracing
(Stored with Git LFS)
BIN
fail/bin/fail-x86-tracing
(Stored with Git LFS)
Binary file not shown.
BIN
fail/bin/generic-experiment-client
(Stored with Git LFS)
BIN
fail/bin/generic-experiment-client
(Stored with Git LFS)
Binary file not shown.
BIN
fail/bin/generic-experiment-server
(Stored with Git LFS)
BIN
fail/bin/generic-experiment-server
(Stored with Git LFS)
Binary file not shown.
BIN
fail/bin/import-trace
(Stored with Git LFS)
BIN
fail/bin/import-trace
(Stored with Git LFS)
Binary file not shown.
BIN
fail/bin/prune-trace
(Stored with Git LFS)
BIN
fail/bin/prune-trace
(Stored with Git LFS)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -417,7 +417,7 @@ rec {
|
|||||||
mariadb.client
|
mariadb.client
|
||||||
# dbeaver-bin
|
# dbeaver-bin
|
||||||
# beekeeper-studio
|
# beekeeper-studio
|
||||||
tableplus
|
# tableplus
|
||||||
lazysql
|
lazysql
|
||||||
iwasm
|
iwasm
|
||||||
wamrc
|
wamrc
|
||||||
|
|||||||
@ -136,7 +136,8 @@ sub import_trace {
|
|||||||
"-v $experiment",
|
"-v $experiment",
|
||||||
"-b ip",
|
"-b ip",
|
||||||
"--objdump objdump",
|
"--objdump objdump",
|
||||||
"--sources",
|
|
||||||
|
# "--sources",
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
system(
|
system(
|
||||||
@ -150,7 +151,8 @@ sub import_trace {
|
|||||||
"-v $experiment",
|
"-v $experiment",
|
||||||
"-b mem",
|
"-b mem",
|
||||||
"--objdump objdump",
|
"--objdump objdump",
|
||||||
"--sources",
|
|
||||||
|
# "--sources",
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
system(
|
system(
|
||||||
@ -164,7 +166,8 @@ sub import_trace {
|
|||||||
"-v $experiment",
|
"-v $experiment",
|
||||||
"-b regs",
|
"-b regs",
|
||||||
"--objdump objdump",
|
"--objdump objdump",
|
||||||
"--sources",
|
|
||||||
|
# "--sources",
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -186,6 +189,39 @@ sub inject {
|
|||||||
|
|
||||||
Util::notify("Injecting $experiment using $count cores...");
|
Util::notify("Injecting $experiment using $count cores...");
|
||||||
|
|
||||||
|
my $server_command = join " ",
|
||||||
|
(
|
||||||
|
"$fail_server", "--port $fail_server_port",
|
||||||
|
"--database-option-file $remote_db_conf", "-v $experiment",
|
||||||
|
"-b %", "--inject-single-bit",
|
||||||
|
"--inject-registers", ">$remote_root/server.log"
|
||||||
|
);
|
||||||
|
say "Server command: $server_command";
|
||||||
|
|
||||||
|
my $client_command = join " ", (
|
||||||
|
"nice $bochs_runner",
|
||||||
|
"-V $fail_share/vgabios.bin",
|
||||||
|
"-b $fail_share/BIOS-bochs-latest",
|
||||||
|
"-f $fail_inject",
|
||||||
|
"-e $remote_builds_dir/$experiment/system.elf",
|
||||||
|
"-i $remote_builds_dir/$experiment/system.iso",
|
||||||
|
"-j $count",
|
||||||
|
"--",
|
||||||
|
"-Wf,--server-port=$fail_server_port",
|
||||||
|
"-Wf,--state-dir=$remote_builds_dir/$experiment/state",
|
||||||
|
"-Wf,--trap",
|
||||||
|
"-Wf,--catch-outerspace",
|
||||||
|
"-Wf,--catch-write-textsegment",
|
||||||
|
"-Wf,--timeout=500000",
|
||||||
|
"-Wf,--ok-marker=fail_marker_positive",
|
||||||
|
"-Wf,--fail-marker=fail_marker_negative",
|
||||||
|
"-Wf,--detected-marker=fail_marker_detected",
|
||||||
|
|
||||||
|
# ">/dev/null"
|
||||||
|
">$remote_root/client.log"
|
||||||
|
);
|
||||||
|
say "Client command: $client_command";
|
||||||
|
|
||||||
say "Forking...";
|
say "Forking...";
|
||||||
my $pid = fork();
|
my $pid = fork();
|
||||||
die "fork failed: $!" unless defined $pid;
|
die "fork failed: $!" unless defined $pid;
|
||||||
@ -193,52 +229,16 @@ sub inject {
|
|||||||
if ( $pid == 0 ) {
|
if ( $pid == 0 ) {
|
||||||
|
|
||||||
# child -> server
|
# child -> server
|
||||||
|
|
||||||
say "Running server in child process...";
|
say "Running server in child process...";
|
||||||
exec(
|
exec($server_command) == 0 or die "exec server failed: $!";
|
||||||
join " ",
|
|
||||||
(
|
|
||||||
"$fail_server",
|
|
||||||
"--port $fail_server_port",
|
|
||||||
"--database-option-file $remote_db_conf",
|
|
||||||
"-v $experiment",
|
|
||||||
"-b %",
|
|
||||||
"--inject-single-bit",
|
|
||||||
"--inject-registers"
|
|
||||||
)
|
|
||||||
) == 0 or die "exec server failed: $!";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# parent -> client
|
# parent -> client
|
||||||
|
|
||||||
say "Waiting for server...";
|
say "Waiting for server...";
|
||||||
sleep(10);
|
sleep(10);
|
||||||
|
|
||||||
say "Running client with $count cores in parent process";
|
say "Running client with $count cores in parent process";
|
||||||
|
system($client_command) == 0 or die "client failed: $?";
|
||||||
system(
|
|
||||||
join " ",
|
|
||||||
(
|
|
||||||
"nice $bochs_runner",
|
|
||||||
"-V $fail_share/vgabios.bin",
|
|
||||||
"-b $fail_share/BIOS-bochs-latest",
|
|
||||||
"-f $fail_inject",
|
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
|
||||||
"-i $remote_builds_dir/$experiment/system.iso",
|
|
||||||
"-j $count",
|
|
||||||
"--",
|
|
||||||
"-Wf,--server-port=$fail_server_port",
|
|
||||||
"-Wf,--state-dir=$remote_builds_dir/$experiment/state",
|
|
||||||
"-Wf,--trap",
|
|
||||||
"-Wf,--catch-outerspace",
|
|
||||||
"-Wf,--catch-write-textsegment",
|
|
||||||
"-Wf,--timeout=500000",
|
|
||||||
"-Wf,--ok-marker=fail_marker_positive",
|
|
||||||
"-Wf,--fail-marker=fail_marker_negative",
|
|
||||||
"-Wf,--detected-marker=fail_marker_detected",
|
|
||||||
">/dev/null"
|
|
||||||
)
|
|
||||||
) == 0 or die "client failed: $?";
|
|
||||||
|
|
||||||
say "Killing server with pid $pid...";
|
say "Killing server with pid $pid...";
|
||||||
kill 'TERM', $pid;
|
kill 'TERM', $pid;
|
||||||
@ -261,6 +261,10 @@ sub results {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
system("rm $remote_root/runner.log");
|
||||||
|
system("rm $remote_root/server.log");
|
||||||
|
system("rm $remote_root/client.log");
|
||||||
|
|
||||||
# Run experiments
|
# Run experiments
|
||||||
my @experiments = Util::find_subdirs($remote_builds_dir);
|
my @experiments = Util::find_subdirs($remote_builds_dir);
|
||||||
for my $experiment (@experiments) {
|
for my $experiment (@experiments) {
|
||||||
@ -271,6 +275,13 @@ for my $experiment (@experiments) {
|
|||||||
import_trace($experiment);
|
import_trace($experiment);
|
||||||
inject($experiment);
|
inject($experiment);
|
||||||
results($experiment);
|
results($experiment);
|
||||||
|
|
||||||
|
system(
|
||||||
|
"mv $remote_root/runner.log $remote_builds_dir/$experiment/runner.log");
|
||||||
|
system(
|
||||||
|
"mv $remote_root/server.log $remote_builds_dir/$experiment/server.log");
|
||||||
|
system(
|
||||||
|
"mv $remote_root/client.log $remote_builds_dir/$experiment/client.log");
|
||||||
}
|
}
|
||||||
|
|
||||||
Util::notify("Finished all experiments");
|
Util::notify("Finished all experiments");
|
||||||
|
|||||||
Reference in New Issue
Block a user