Skip to content

PHD behaves somewhat badly with regards to stdout when SIGINTed #1040

@hawkw

Description

@hawkw

this basically doesn't actually matter at all, but because PHD cleans up after itself asynchronously when SIGINT'd, the terminal will print the prompt while PHD is still alive and prints some more long lines. this bothers me because i'm a huge dweeb but doesn't actually matter at all because you can just whack a couple of times and get your prompt back. nonetheless, i hate it.

eliza@atrium ~/propolis $ cargo xtask phd run --no-crucible --no-base-propolis
   Compiling propolis-server
    Finished propolis-server dev [unoptimized + debuginfo] in 0.69s
       Found existing artifact directory `target/phd/artifacts`
     Created temp directory `target/phd/tmp/1770405869`
       Found artifacts.toml at `phd-tests/artifacts.toml`
   Compiling phd-runner
    Finished phd-runner dev [unoptimized + debuginfo] in 19.96s
    Skipping Crucible tests
    Skipping migration-from-base tests
     Running pfexec /home/eliza/propolis/target/x86_64-unknown-illumos/debug/phd-runner run \
        --propolis-server-cmd target/x86_64-unknown-illumos/debug/propolis-server \
        --artifact-toml-path phd-tests/artifacts.toml \
        --artifact-directory target/phd/artifacts \
        --tmp-directory target/phd/tmp/1770405869
2026-02-06T19:24:50.025469Z  INFO phd_runner: 36: runner_args=ProcessArgs { command: Run(RunOptions { propolis_server_cmd: "target/x86_64-unknown-illumos/debug/propolis-server", base_propolis_branch: None, base_propolis_commit: None, base_propolis_cmd: None, crucible_downstairs_cmd: None, crucible_downstairs_commit: None, tmp_directory: "target/phd/tmp/1770405869", artifact_directory: Some("target/phd/artifacts"), output_mode: TmpFile, default_guest_cpus: 2, default_guest_memory_mib: 512, artifact_toml_path: "phd-tests/artifacts.toml", default_guest_artifact: "alpine", default_bootrom_artifact: "ovmf", include_filter: [], exclude_filter: [], max_buildomat_wait_secs: 1200 }), disable_ansi: false, emit_bunyan: false }

 ...

2026-02-06T19:26:27.675354Z  INFO test{path=phd_tests::stats::instance_vcpu_stats}:wait_for_serial_output{vm="instance_vcpu_stats" vm_id=3d50e9ec-e469-45af-b400-3ec3aa617036}: phd_framework::test_vm: 804: Waiting for output on serial console target="localhost:~#" timeout_duration=Explicit(300s)
^X^C2026-02-06T19:26:37.098790Z  WARN phd_runner::execute: 193: SIGINT received, sending shutdown signal to tests
2026-02-06T19:26:37.099371Z  INFO phd_runner::execute: 130: test phd_tests::stats::instance_vcpu_stats ... FAILED: test interrupted by SIGINT
Feb 06 19:26:37.099 INFO beginning graceful shutdown, local_addr: [::1]:50667, component: phd-oximeter-consumer

eliza@atrium ~/propolis $ 2026-02-06T19:26:38.013335Z  INFO phd_runner::execute: 86: Test run interrupted by SIGINT

failures:
    phd_tests::stats::instance_vcpu_stats

test result: FAILED. 5 passed; 1 failed; 0 skipped; 41 not run; finished in 107.98s


eliza@atrium ~/propolis $
eliza@atrium ~/propolis $

Metadata

Metadata

Assignees

Labels

bugSomething that isn't working.testingRelated to testing and/or the PHD test framework.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions