diff --git a/scripts/runner.pl b/scripts/runner.pl index 6910a8d..7d897cd 100644 --- a/scripts/runner.pl +++ b/scripts/runner.pl @@ -136,7 +136,7 @@ sub import_trace { "-v $experiment", "-b ip", "--objdump objdump", - "--sources", + # "--sources", ) ); system( @@ -150,7 +150,7 @@ sub import_trace { "-v $experiment", "-b mem", "--objdump objdump", - "--sources", + # "--sources", ) ); system( @@ -164,7 +164,7 @@ sub import_trace { "-v $experiment", "-b regs", "--objdump objdump", - "--sources", + # "--sources", ) ); @@ -186,6 +186,41 @@ sub inject { 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..."; my $pid = fork(); die "fork failed: $!" unless defined $pid; @@ -193,52 +228,16 @@ sub inject { if ( $pid == 0 ) { # child -> server - say "Running server in child process..."; - exec( - 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: $!"; + exec($server_command) == 0 or die "exec server failed: $!"; } # parent -> client - say "Waiting for server..."; sleep(10); say "Running client with $count cores in parent process"; - - 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: $?"; + system($client_command) == 0 or die "client failed: $?"; say "Killing server with pid $pid..."; kill 'TERM', $pid; @@ -261,6 +260,10 @@ sub results { } } +system("rm $remote_root/runner.log"); +system("rm $remote_root/server.log"); +system("rm $remote_root/client.log"); + # Run experiments my @experiments = Util::find_subdirs($remote_builds_dir); for my $experiment (@experiments) { @@ -271,6 +274,10 @@ for my $experiment (@experiments) { import_trace($experiment); inject($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");