[INFO] fetching crate ezcp 0.4.0... [INFO] testing ezcp-0.4.0 against try#b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b for pr-145330-1 [INFO] extracting crate ezcp 0.4.0 into /workspace/builds/worker-4-tc2/source [INFO] started tweaking crates.io crate ezcp 0.4.0 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate ezcp 0.4.0 [INFO] tweaked toml for crates.io crate ezcp 0.4.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate ezcp 0.4.0 on toolchain b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate ezcp 0.4.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] e0e12b2d4617f945fcebd138a982e91430743acff2c522fa07eb31fd30bcc89c [INFO] running `Command { std: "docker" "start" "-a" "e0e12b2d4617f945fcebd138a982e91430743acff2c522fa07eb31fd30bcc89c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e0e12b2d4617f945fcebd138a982e91430743acff2c522fa07eb31fd30bcc89c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e0e12b2d4617f945fcebd138a982e91430743acff2c522fa07eb31fd30bcc89c", kill_on_drop: false }` [INFO] [stdout] e0e12b2d4617f945fcebd138a982e91430743acff2c522fa07eb31fd30bcc89c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7e2d1a82b6c63de6962d395329d4051f583505a15df3475116bd28bae7952313 [INFO] running `Command { std: "docker" "start" "-a" "7e2d1a82b6c63de6962d395329d4051f583505a15df3475116bd28bae7952313", kill_on_drop: false }` [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling rustix v1.0.8 [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling zlib-rs v0.5.1 [INFO] [stderr] Compiling bitflags v2.9.3 [INFO] [stderr] Compiling console v0.16.0 [INFO] [stderr] Compiling thiserror v2.0.16 [INFO] [stderr] Compiling snap v1.1.1 [INFO] [stderr] Compiling simd-adler32 v0.3.7 [INFO] [stderr] Compiling bumpalo v3.19.0 [INFO] [stderr] Compiling indexmap v2.11.0 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling zopfli v0.8.2 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Compiling indicatif v0.18.0 [INFO] [stderr] Compiling unty v0.0.4 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling env_home v0.1.0 [INFO] [stderr] Compiling env_logger v0.11.8 [INFO] [stderr] Compiling indicatif-log-bridge v0.2.3 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling tempfile v3.21.0 [INFO] [stderr] Compiling which v8.0.0 [INFO] [stderr] Compiling thiserror-impl v2.0.16 [INFO] [stderr] Compiling bincode v2.0.1 [INFO] [stderr] Compiling libz-rs-sys v0.5.1 [INFO] [stderr] Compiling flate2 v1.1.2 [INFO] [stderr] Compiling zip v4.5.0 [INFO] [stderr] Compiling ezcp v0.4.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.19s [INFO] running `Command { std: "docker" "inspect" "7e2d1a82b6c63de6962d395329d4051f583505a15df3475116bd28bae7952313", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7e2d1a82b6c63de6962d395329d4051f583505a15df3475116bd28bae7952313", kill_on_drop: false }` [INFO] [stdout] 7e2d1a82b6c63de6962d395329d4051f583505a15df3475116bd28bae7952313 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a9dbd816dda36031b0b65565dc6b495b4dcd3e50b1301a2b745c87daf9297fb1 [INFO] running `Command { std: "docker" "start" "-a" "a9dbd816dda36031b0b65565dc6b495b4dcd3e50b1301a2b745c87daf9297fb1", kill_on_drop: false }` [INFO] [stderr] Compiling ezcp v0.4.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.93s [INFO] running `Command { std: "docker" "inspect" "a9dbd816dda36031b0b65565dc6b495b4dcd3e50b1301a2b745c87daf9297fb1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a9dbd816dda36031b0b65565dc6b495b4dcd3e50b1301a2b745c87daf9297fb1", kill_on_drop: false }` [INFO] [stdout] a9dbd816dda36031b0b65565dc6b495b4dcd3e50b1301a2b745c87daf9297fb1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+b6ae10aa7319b7ebb6c7b3331dd71a9d6c9c5b4b" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] c09d1f4584df803197b84297c63a91b56d4fb5e5bb3017dc87ede83027431801 [INFO] running `Command { std: "docker" "start" "-a" "c09d1f4584df803197b84297c63a91b56d4fb5e5bb3017dc87ede83027431801", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ezcp-7ad71943c0f97b8e) [INFO] [stdout] [INFO] [stdout] running 70 tests [INFO] [stderr] [D] Logger initialized with level: TRACE [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpY9qvgh/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpY9qvgh/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpY9qvgh/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpY9qvgh/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpY9qvgh/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpY9qvgh/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpY9qvgh/build/p14324055355525279488" [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpYvEu1A/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpYvEu1A/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpYvEu1A/build/p14324055355525279488 [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpIOTa61/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpIOTa61/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpIOTa61/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpIOTa61/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpIOTa61/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpIOTa61/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpIOTa61/build/p14324055355525279488" [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpYvEu1A/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpYvEu1A/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpYvEu1A/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpYvEu1A/build/p14324055355525279488" [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpsR9M79/build [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpkNMVov/build [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmp514i7K/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpBN9SEO/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpBN9SEO/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpBN9SEO/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpBN9SEO/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpBN9SEO/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpBN9SEO/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpBN9SEO/build/p14324055355525279488" [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp514i7K/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp514i7K/build/p14324055355525279488.cpp" "-o" "/tmp/.tmp514i7K/build/p14324055355525279488" [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpliBJEX/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpliBJEX/build/p14324055355525279488" [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpkNMVov/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpkNMVov/build/p14324055355525279488" [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpsR9M79/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpsR9M79/build/p14324055355525279488" [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] [T] Program handle created with id: 1 and hash: 6857213752579981138 [INFO] [stderr] [T] Source file: /tmp/.tmpIOTa61/build/p6857213752579981138.cpp, Executable file: /tmp/.tmpIOTa61/build/p6857213752579981138 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpIOTa61/build/p6857213752579981138.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpIOTa61/build/p6857213752579981138 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpIOTa61/build/p6857213752579981138.cpp" "-o" "/tmp/.tmpIOTa61/build/p6857213752579981138" [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpliBJEX/build/p11267333155935078430.cpp" "-o" "/tmp/.tmpliBJEX/build/p11267333155935078430" [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpY9qvgh/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpY9qvgh/build/p11267333155935078430 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpY9qvgh/build/p11267333155935078430.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpY9qvgh/build/p11267333155935078430 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpY9qvgh/build/p11267333155935078430.cpp" "-o" "/tmp/.tmpY9qvgh/build/p11267333155935078430" [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpIOTa61/build [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 1 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 5 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 7 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 0 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 4 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 3 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 6 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 10 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 8 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 13 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 16 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 11 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 14 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 17 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 15 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 18 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 21 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 12 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 22 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 23 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 19 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 20 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 29 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 30 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 26 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 28 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 25 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 24 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 27 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 32 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 33 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 31 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 36 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Task 37 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 34 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 38 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 39 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Task 41 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 43 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 35 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 40 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 44 finished with result: Ok(1, "1\n") [INFO] [stderr] [ERROR] Expected integer in input [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpsR9M79/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpsR9M79/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpsR9M79/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpV85MAS/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpV85MAS/build/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpV85MAS/build/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpV85MAS/build/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpV85MAS/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpV85MAS/build/p14324055355525279488" [INFO] [stdout] test tests::checker_tests::generator_tests::test_checker_fail3 ... ok [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] a should be equal to b [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmp514i7K/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp514i7K/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp514i7K/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stdout] test tests::checker_tests::generator_tests::test_checker_fail2 ... ok [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpIvxMHI [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpIvxMHI/p14324055355525279488.cpp, Executable file: /tmp/.tmpIvxMHI/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpIvxMHI/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpIvxMHI/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpIvxMHI/p14324055355525279488.cpp" "-o" "/tmp/.tmpIvxMHI/p14324055355525279488" [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpliBJEX/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpliBJEX/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430 [INFO] [stderr] [T] Source file: /tmp/.tmpliBJEX/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpliBJEX/build/p11267333155935078430 [INFO] [stderr] [ERROR] all array values should be in range [1, 99] [INFO] [stdout] test tests::checker_tests::generator_tests::test_checker_fail ... ok [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmp5s8JbN [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmp5s8JbN/p14324055355525279488.cpp, Executable file: /tmp/.tmp5s8JbN/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp5s8JbN/p14324055355525279488.cpp [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp5s8JbN/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp5s8JbN/p14324055355525279488.cpp" "-o" "/tmp/.tmp5s8JbN/p14324055355525279488" [INFO] [stderr] [*] Tests size: 0.01MB [INFO] [stderr] [*] Elapsed time: 9.64s [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpIOTa61/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpIOTa61/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpIOTa61/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] [T] Program handle created with id: 1 and hash: 6857213752579981138 [INFO] [stderr] [T] Source file: /tmp/.tmpIOTa61/build/p6857213752579981138.cpp, Executable file: /tmp/.tmpIOTa61/build/p6857213752579981138 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpIOTa61/build [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 5 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 2 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 3 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 7 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 9 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 4 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 1 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 0 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 8 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 14 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 10 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 11 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 17 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpYvEu1A/build [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Task 12 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 5 finished with result: Ok(1, "6\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 3 finished with result: Ok(1, "2\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 7 finished with result: Ok(1, "6\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 0 finished with result: Ok(1, "2\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 9 finished with result: Ok(0, "10\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 22 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 2 finished with result: Ok(0, "6\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpYvEu1A/build/p14324055355525279488" "/tmp/.tmpYvEu1A/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 18 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 19 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 20 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 26 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 27 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 28 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stdout] test tests::checker_tests::generator_tests::test_checker_fail4 ... ok [INFO] [stderr] [ERROR] Expected end of input [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpkNMVov/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpkNMVov/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpkNMVov/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpPzIfAd/p14324055355525279488.cpp, Executable file: /tmp/.tmpPzIfAd/p14324055355525279488 [INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpPzIfAd/p14324055355525279488.cpp [INFO] [stderr] [T] Task 13 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpPzIfAd/p14324055355525279488 [INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpPzIfAd/p14324055355525279488.cpp" "-o" "/tmp/.tmpPzIfAd/p14324055355525279488" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 29 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 12 finished with result: Ok(2, "3\n") [INFO] [stderr] [T] Getting result for task id: 0 [INFO] [stderr] [T] Getting result for task id: 1 [INFO] [stderr] [T] Getting result for task id: 2 [INFO] [stderr] [T] Getting result for task id: 3 [INFO] [stderr] [T] Getting result for task id: 4 [INFO] [stderr] [T] Getting result for task id: 5 [INFO] [stderr] [T] Getting result for task id: 6 [INFO] [stderr] [T] Getting result for task id: 7 [INFO] [stderr] [T] Getting result for task id: 8 [INFO] [stderr] [T] Getting result for task id: 9 [INFO] [stderr] [T] Getting result for task id: 10 [INFO] [stderr] [T] Getting result for task id: 11 [INFO] [stderr] [T] Getting result for task id: 12 [INFO] [stderr] [T] Getting result for task id: 13 [INFO] [stderr] [T] Getting result for task id: 14 [INFO] [stderr] [T] Getting result for task id: 15 [INFO] [stderr] [*] Solution time: 2ms [INFO] [stderr] [T] Clearing tasks [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 23 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 30 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpBN9SEO/build [INFO] [stderr] [T] Getting result for task id: 0 [INFO] [stderr] [T] Getting result for task id: 1 [INFO] [stderr] [T] Running command: "/tmp/.tmpBN9SEO/build/p14324055355525279488" "/tmp/.tmpBN9SEO/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Getting result for task id: 2 [INFO] [stderr] [T] Getting result for task id: 3 [INFO] [stderr] [T] Getting result for task id: 4 [INFO] [stderr] [T] Getting result for task id: 5 [INFO] [stderr] [T] Getting result for task id: 6 [INFO] [stderr] [T] Getting result for task id: 7 [INFO] [stderr] [T] Getting result for task id: 8 [INFO] [stderr] [T] Getting result for task id: 9 [INFO] [stderr] [T] Getting result for task id: 10 [INFO] [stderr] [T] Getting result for task id: 11 [INFO] [stderr] [T] Getting result for task id: 12 [INFO] [stderr] [T] Getting result for task id: 13 [INFO] [stderr] [T] Getting result for task id: 14 [INFO] [stderr] [T] Getting result for task id: 15 [INFO] [stderr] [T] Getting result for task id: 16 [INFO] [stderr] [T] Getting result for task id: 17 [INFO] [stderr] [T] Getting result for task id: 18 [INFO] [stderr] [T] Getting result for task id: 19 [INFO] [stderr] [T] Getting result for task id: 20 [INFO] [stderr] [T] Getting result for task id: 21 [INFO] [stderr] [T] Getting result for task id: 22 [INFO] [stderr] [T] Getting result for task id: 23 [INFO] [stderr] [T] Getting result for task id: 24 [INFO] [stderr] [T] Getting result for task id: 25 [INFO] [stderr] [T] Getting result for task id: 26 [INFO] [stderr] [T] Getting result for task id: 27 [INFO] [stderr] [T] Getting result for task id: 28 [INFO] [stderr] [T] Getting result for task id: 29 [INFO] [stderr] [T] Getting result for task id: 30 [INFO] [stderr] [T] Getting result for task id: 31 [INFO] [stderr] [T] Getting result for task id: 32 [INFO] [stderr] [T] Getting result for task id: 33 [INFO] [stderr] [T] Getting result for task id: 34 [INFO] [stderr] [T] Getting result for task id: 35 [INFO] [stderr] [T] Getting result for task id: 36 [INFO] [stderr] [T] Getting result for task id: 37 [INFO] [stderr] [T] Getting result for task id: 38 [INFO] [stderr] [T] Getting result for task id: 39 [INFO] [stderr] [T] Getting result for task id: 40 [INFO] [stderr] [T] Getting result for task id: 41 [INFO] [stderr] [T] Getting result for task id: 42 [INFO] [stderr] [T] Getting result for task id: 43 [INFO] [stderr] [T] Getting result for task id: 44 [INFO] [stderr] [*] Solution time: 2ms [INFO] [stderr] [T] Clearing tasks [INFO] [stderr] [T] Running command: "/tmp/.tmpBN9SEO/build/p14324055355525279488" "/tmp/.tmpBN9SEO/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpBN9SEO/build/p14324055355525279488" "/tmp/.tmpBN9SEO/build/p12681089750808797356" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 0 finished with result: Ok(1, "2\n") [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Task 2 finished with result: Ok(0, "6\n") [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 1 finished with result: Ok(2, "4\n") [INFO] [stderr] [T] Getting result for task id: 0 [INFO] [stderr] [T] Getting result for task id: 1 [INFO] [stderr] [T] Getting result for task id: 2 [INFO] [stderr] [*] Solution time: 2ms [INFO] [stderr] [T] Clearing tasks [INFO] [stderr] [*] Tests size: 0.00MB [INFO] [stderr] [*] Elapsed time: 10.68s [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpYvEu1A/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpYvEu1A/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpYvEu1A/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpBN9SEO/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpBN9SEO/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpBN9SEO/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpBN9SEO/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int a,b; [INFO] [stderr] | cin>>a>>b; [INFO] [stderr] | cout< [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpIOTa61/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpIOTa61/build/p14324055355525279488 [INFO] [stderr] [T] Adding program with source code: [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | int main() { [INFO] [stderr] | int n; [INFO] [stderr] | cin>>n; [INFO] [stderr] | int a[n]; [INFO] [stderr] | for(int i=0;i>a[i]; [INFO] [stderr] | } [INFO] [stderr] | cout<<"1\n"; [INFO] [stderr] | return 0; [INFO] [stderr] | } [INFO] [stderr] [T] Program handle created with id: 1 and hash: 6857213752579981138 [INFO] [stderr] [T] Source file: /tmp/.tmpIOTa61/build/p6857213752579981138.cpp, Executable file: /tmp/.tmpIOTa61/build/p6857213752579981138 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Adding task for program id: 1, time limit: 5 [INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpIOTa61/build [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 0 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Task 0 finished with result: Ok(0, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 1 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 3 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 4 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 5 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Task 6 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Elapsed time from timer: 2 ms [INFO] [stderr] [T] Task 7 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n") [INFO] [stderr] [T] Elapsed time from timer: 1 ms [INFO] [stderr] [T] Task 10 finished with result: Ok(1, "1\n") [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [T] Running command: "/tmp/.tmpIOTa61/build/p14324055355525279488" "/tmp/.tmpIOTa61/build/p6857213752579981138" "5000" [INFO] [stderr] [*] Tests size: 0.00MB [INFO] [stderr] [*] Elapsed time: 0.60s [INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpYvEu1A/build [INFO] [stderr] [T] Building timer program [INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32 [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | long long get_rusage(HANDLE process) { [INFO] [stderr] | FILETIME creationTime, exitTime, kernelTime, userTime; [INFO] [stderr] | GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime); [INFO] [stderr] | [INFO] [stderr] | ULARGE_INTEGER userTimeInt, sysTimeInt; [INFO] [stderr] | userTimeInt.LowPart = userTime.dwLowDateTime; [INFO] [stderr] | userTimeInt.HighPart = userTime.dwHighDateTime; [INFO] [stderr] | sysTimeInt.LowPart = kernelTime.dwLowDateTime; [INFO] [stderr] | sysTimeInt.HighPart = kernelTime.dwHighDateTime; [INFO] [stderr] | [INFO] [stderr] | long long user_ms = userTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | long long sys_ms = sysTimeInt.QuadPart / 10000; // Convert to milliseconds [INFO] [stderr] | [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int timeout_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | // Use STARTUPINFOW for wide characters [INFO] [stderr] | STARTUPINFOW si = { sizeof(si) }; [INFO] [stderr] | PROCESS_INFORMATION pi; [INFO] [stderr] | ZeroMemory(&pi, sizeof(pi)); [INFO] [stderr] | [INFO] [stderr] | // Convert command to wide string for Windows (needed for CreateProcessW) [INFO] [stderr] | wstring wcommand(command.begin(), command.end()); [INFO] [stderr] | [INFO] [stderr] | // Use CreateProcessW (wide character version) [INFO] [stderr] | if (!CreateProcessW( [INFO] [stderr] | NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { [INFO] [stderr] | return -1; // Error in creating process [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | DWORD waitResult; [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms); [INFO] [stderr] | if (waitResult == WAIT_OBJECT_0) { [INFO] [stderr] | long long elapsed_time = get_rusage(pi.hProcess); [INFO] [stderr] | cerr << elapsed_time << endl; // Output the elapsed time [INFO] [stderr] | [INFO] [stderr] | DWORD exitCode; [INFO] [stderr] | GetExitCodeProcess(pi.hProcess, &exitCode); [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | return exitCode; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | Sleep(wait_time_ms); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | TerminateProcess(pi.hProcess, 1); // Kill the process [INFO] [stderr] | WaitForSingleObject(pi.hProcess, INFINITE); // Wait for it to terminate [INFO] [stderr] | [INFO] [stderr] | CloseHandle(pi.hProcess); [INFO] [stderr] | CloseHandle(pi.hThread); [INFO] [stderr] | [INFO] [stderr] | return 175; // Timeout occurred [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #else [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | #include [INFO] [stderr] | using namespace std; [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] | long long get_rusage() { [INFO] [stderr] | rusage res; [INFO] [stderr] | getrusage(RUSAGE_CHILDREN, &res); [INFO] [stderr] | timeval user = res.ru_utime; [INFO] [stderr] | timeval sys = res.ru_stime; [INFO] [stderr] | long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000; [INFO] [stderr] | long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000; [INFO] [stderr] | return user_ms + sys_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int run_command_with_timeout(const string& command, int timeout_ms) { [INFO] [stderr] | pid_t pid = fork(); [INFO] [stderr] | [INFO] [stderr] | if (pid < 0) { [INFO] [stderr] | // fork failed [INFO] [stderr] | return -1; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | if (pid == 0) { [INFO] [stderr] | exit(execl(command.c_str(), (char*) nullptr)); [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int status; [INFO] [stderr] | int wait_time_ms = 10; // check every 10ms [INFO] [stderr] | int elapsed = 0; [INFO] [stderr] | [INFO] [stderr] | while (elapsed < timeout_ms) { [INFO] [stderr] | pid_t result = waitpid(pid, &status, WNOHANG); [INFO] [stderr] | if (result == pid) { [INFO] [stderr] | if (WIFEXITED(status)) { [INFO] [stderr] | int exit_code = WEXITSTATUS(status); [INFO] [stderr] | return exit_code; [INFO] [stderr] | } else if (WIFSIGNALED(status)) { [INFO] [stderr] | int signal = WTERMSIG(status); [INFO] [stderr] | return signal; [INFO] [stderr] | } [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | this_thread::sleep_for(chrono::milliseconds(wait_time_ms)); [INFO] [stderr] | elapsed += wait_time_ms; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | kill(pid, SIGKILL); [INFO] [stderr] | waitpid(pid, &status, 0); [INFO] [stderr] | [INFO] [stderr] | return 175; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | int main(int argc, const char* argv[]) { [INFO] [stderr] | string command = argv[1]; [INFO] [stderr] | int time_limit_ms = stoi(argv[2]); [INFO] [stderr] | [INFO] [stderr] | long long start = get_rusage(); [INFO] [stderr] | int exit_status = run_command_with_timeout(command, time_limit_ms * 2); [INFO] [stderr] | long long end = get_rusage(); [INFO] [stderr] | [INFO] [stderr] | long long elapsed = end - start; [INFO] [stderr] | [INFO] [stderr] | if(elapsed >= time_limit_ms) [INFO] [stderr] | return 175; [INFO] [stderr] | [INFO] [stderr] | cerr << end - start; [INFO] [stderr] | return exit_status; [INFO] [stderr] | } [INFO] [stderr] | [INFO] [stderr] | #endif [INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488 [INFO] [stderr] [T] Source file: /tmp/.tmpYvEu1A/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpYvEu1A/build/p14324055355525279488 [WARN] too many lines in the log, truncating it