rust-lang / rust-lang/rustup

Warnings being printed after input control is returned to `cmd.exe`

Open
#4,463 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug O-windows
Dominant language
Rust
Stars
7k
Forks
1.1k
Avg merge
22h 40m
Merged PRs (30d)
46

Description

Although this bug has been spotted on outdated versions and a platform that is no longer supported, I still decided to write about it, because it may well still exist and indicate certain problems with the async code. Someone else needs to check it, since I don't have the opportunity to do it yet.


Problem

Assume having a Rust environment with tool management conflict(s) between Cargo and Rustup, which results in the well-known warning: tool is already installed. So, when a version specified in ${RUSTUP_UPDATE_ROOT}/rustup/release-stable.toml is distinct and I run rustup self update, then after downloading and installing it these warnings will be output literally into the command prompt. Moreover, this also sometimes happens not immediately, but literally a few seconds later. To me, this pretty suggests some kind of multithreading issue.

2025-08-28_163002.png

And once I noticed the same bug on another command: rustup toolchain install 1.77-gnu 1.77-i686 1.77-i686-gnu:

photo_2024-11-16_17-48-45.jpg.png
Configuration

Rustup versions tested: 1.27.1, 1.27.1+381 (03b7c56bf 2024-07-30)
Operating system: Windows 7 Ultimate (Service Pack 1) x64

Additional notes
  1. Setting the environment variable RUSTUP_IO_THREADS=1 doesn't affect the observed behavior.
  2. I tested version 1.27.1+381 because 03b7c56bf0b4228977257810218b963b7246cf62 is the last revision that can be built with Rust 1.77.2 and run on Windows 7 - I deliberately ran git bisect to find this out. It's worth noting that the bug is also present there, but in addition the text can no longer be colored in cmd.exe starting with commit 509714deb4b8bc5be7e38e2f3779ed4e2b704177, which is shown on the first screenshot as well.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the delayed warnings with rustup self update and rustup toolchain install 1.77-gnu 1.77-i686 1.77-i686-gnu on the Windows configuration described. Compare behavior with RUSTUP_IO_THREADS=1 and trace the asynchronous output paths; done means identifying the cause and preventing warnings from appearing after control returns to cmd.exe.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.