Skip to content

Win32 Alternate data streams don't work with Command in Rust 1.58.0 #93772

@roblabla

Description

@roblabla

Since Rust 1.58, code using Command to spawn new processes that live in an alternate data stream on Windows fails to work. Alternate Data Streams are files that have a :suffix, such as filename.exe:alt.

Code

This is the code that fails:

std::fs::File::create("test.txt").unwrap();
std::fs::copy(r"C:\Windows\System32\find.exe", "test.txt:lolexe").unwrap();

let _cmd = Command::new("test.txt:lolexe")
    .status()
    .unwrap();

I expected to see this happen: The command spawns properly and executes the find.exe code

Instead, this happened: The unwrap fails with

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: NotFound, message: "program not found" }', altdatastreamprog/src/lib.rs:514:14

Version it worked on

It most recently worked on: Rust 1.57.x

Version with regression

rust 1.58.0

I believe the commit that broke it is d9a1f9a

@rustbot modify labels: +regression-from-stable-to-stable -regression-untriaged

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions