fix runner external commands

This commit is contained in:
Christoph Urlacher
2026-04-18 10:27:08 +02:00
parent eebb596773
commit a287df261c

View File

@ -86,28 +86,10 @@ sub trace {
notify("Tracing $experiment..."); notify("Tracing $experiment...");
system( system(
$bochs_runner, "$bochs_runner -V $fail_share/vgabios.bin -b $fail_share/BIOS-bochs-latest -1 -f $fail_trace -e $remote_builds_dir/$experiment/system.elf -i $remote_builds_dir/$experiment/system.iso -- -Wf,--start-symbol=fail_start_trace -Wf,--save-symbol=fail_start_trace -Wf,--end-symbol=fail_stop_trace -Wf,--state-file=$remote_builds_dir/$experiment/state -Wf,--trace-file=$remote_builds_dir/$experiment/trace.pb -Wf,--elf-file=$remote_builds_dir/$experiment/system.elf"
"-V",
"$fail_share/vgabios.bin",
"-b",
"$fail_share/BIOS-bochs-latest",
"-1",
"-f",
"$fail_trace",
"-e",
"$remote_builds_dir/$experiment/system.elf",
"-i",
"$remote_builds_dir/$experiment/system.iso",
"--",
"-Wf,--start-symbol=fail_start_trace",
"-Wf,--save-symbol=fail_start_trace",
"-Wf,--end-symbol=fail_stop_trace",
"-Wf,--state-file=$remote_builds_dir/$experiment/state",
"-Wf,--trace-file=$remote_builds_dir/$experiment/trace.pb",
"-Wf,--elf-file=$remote_builds_dir/$experiment/system.elf"
); );
notify("Tracing $experiment complete."); # notify("Tracing $experiment complete.");
} }
sub import_trace { sub import_trace {
@ -116,67 +98,26 @@ sub import_trace {
notify("Importing $experiment trace..."); notify("Importing $experiment trace...");
system( system(
"$fail_import", "--database-option-file", "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i MemoryImporter -e $remote_builds_dir/$experiment/system.elf -v $experiment -b mem"
$remote_db_conf, "-t",
"$remote_builds_dir/$experiment/trace.pb", "-i",
"MemoryImporter", "-e",
"$remote_builds_dir/$experiment/system.elf", "-v",
$experiment, "-b",
"mem"
); );
system( system(
"$fail_import", "--database-option-file", "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i RegisterImporter -e $remote_builds_dir/$experiment/system.elf -v $experiment -b regs --flags"
$remote_db_conf, "-t",
"$remote_builds_dir/$experiment/trace.pb", "-i",
"RegisterImporter", "-e",
"$remote_builds_dir/$experiment/system.elf", "-v",
$experiment, "-b",
"regs", "--flags"
); );
system( system(
"$fail_import", "--database-option-file", "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i RegisterImporter -e $remote_builds_dir/$experiment/system.elf -v $experiment -b ip --no-gp --ip"
$remote_db_conf, "-t",
"$remote_builds_dir/$experiment/trace.pb", "-i",
"RegisterImporter", "-e",
"$remote_builds_dir/$experiment/system.elf", "-v",
$experiment, "-b",
"ip", "--no-gp",
"--ip"
); );
system( system(
"$fail_import", "--database-option-file", "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i ElfImporter --objdump objdump -e $remote_builds_dir/$experiment/system.elf -v $experiment -b ip"
$remote_db_conf, "-t",
"$remote_builds_dir/$experiment/trace.pb", "-i",
"ElfImporter", "--objdump",
"objdump", "-e",
"$remote_builds_dir/$experiment/system.elf", "-v",
$experiment, "-b",
"ip"
); );
system( system(
"$fail_import", "--database-option-file", "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i ElfImporter --objdump objdump -e $remote_builds_dir/$experiment/system.elf -v $experiment -b mem"
$remote_db_conf, "-t",
"$remote_builds_dir/$experiment/trace.pb", "-i",
"ElfImporter", "--objdump",
"objdump", "-e",
"$remote_builds_dir/$experiment/system.elf", "-v",
$experiment, "-b",
"mem"
); );
system( system(
"$fail_import", "--database-option-file", "$fail_import --database-option-file $remote_db_conf -t $remote_builds_dir/$experiment/trace.pb -i ElfImporter --objdump objdump -e $remote_builds_dir/$experiment/system.elf -v $experiment -b regs"
$remote_db_conf, "-t",
"$remote_builds_dir/$experiment/trace.pb", "-i",
"ElfImporter", "--objdump",
"objdump", "-e",
"$remote_builds_dir/$experiment/system.elf", "-v",
"$experiment", "-b",
"regs"
); );
system( "$fail_prune", "--database-option-file", "$remote_db_conf", system( "$fail_prune --database-option-file $remote_db_conf -v $experiment -b %% --overwrite" );
"-v", $experiment, "-b", "%%", "--overwrite" );
notify("Importing $experiment trace complete."); # notify("Importing $experiment trace complete.");
} }
sub inject { sub inject {
@ -191,50 +132,31 @@ sub inject {
# child -> server # child -> server
exec( exec(
$fail_server, "--port", "$fail_server --port $fail_server_port --database-option-file $remote_db_conf -v $experiment -b % --inject-single-bit --inject-registers"
$fail_server_port, "--database-option-file",
$remote_db_conf, "-v",
$experiment, "-b",
"%", "--inject-single-bit",
"--inject-registers"
) or die "exec server failed: $!"; ) or die "exec server failed: $!";
} }
# parent -> client # parent -> client
my $count = cpu_count(); # my $count = cpu_count();
system( my $count = 1;
"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,--catch-write-textsegment",
"-Wf,--timeout=500000", system(
"-Wf,--ok-marker=fail_marker_positive", "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,--timeout=500000 -Wf,--ok-marker=fail_marker_positive -Wf,--fail-marker=fail_marker_negative -Wf,--detected-marker=fail_marker_detected > /dev/null"
"-Wf,--fail-marker=fail_marker_negative",
"-Wf,--detected-marker=fail_marker_detected",
">/dev/null"
) or die "client failed: $?"; ) or die "client failed: $?";
kill 'TERM', $pid; kill 'TERM', $pid;
waitpid( $pid, 0 ); waitpid( $pid, 0 );
notify("Injecting $experiment complete."); # notify("Injecting $experiment complete.");
} }
# TODO: Add a function that accepts query + output file args # TODO: Add a function that accepts query + output file args
sub results { sub results {
my ($experiment) = @_; my ($experiment) = @_;
notify("Querying $experiment...");
my $results_overview_query = "SELECT my $results_overview_query = "SELECT
variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults variant, benchmark, resulttype, sum(t.time2 - t.time1 + 1) as faults
FROM variant v FROM variant v