-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tracking Issue for gracefully handling broken pipes in the compiler #131436
Comments
Ignore broken-pipe-no-ice on apple (specifically macOS) for now This test fails for me locally (initially reported by Zalathar) because apparently on macOS it doesn't say "internal compiler error" but it does report the std I/O panic, and it doesn't exit with a code of 101 but instead terminates with a wait signal of SIGPIPE. Ignore this test on apple for now, until we try to actually address the underlying issue. See rust-lang#131155 and rust-lang#131436 for more context.
Ignore broken-pipe-no-ice on apple (specifically macOS) for now This test fails for me locally (initially reported by Zalathar) because apparently on macOS it doesn't say "internal compiler error" but it does report the std I/O panic, and it doesn't exit with a code of 101 but instead terminates with a wait signal of SIGPIPE. Ignore this test on apple for now, until we try to actually address the underlying issue. See rust-lang#131155 and rust-lang#131436 for more context.
Ignore broken-pipe-no-ice on apple (specifically macOS) for now This test fails for me locally (initially reported by Zalathar) because apparently on macOS it doesn't say "internal compiler error" but it does report the std I/O panic, and it doesn't exit with a code of 101 but instead terminates with a wait signal of SIGPIPE. Ignore this test on apple for now, until we try to actually address the underlying issue. See rust-lang#131155 and rust-lang#131436 for more context.
Rollup merge of rust-lang#131435 - jieyouxu:macos-pipe, r=Zalathar Ignore broken-pipe-no-ice on apple (specifically macOS) for now This test fails for me locally (initially reported by Zalathar) because apparently on macOS it doesn't say "internal compiler error" but it does report the std I/O panic, and it doesn't exit with a code of 101 but instead terminates with a wait signal of SIGPIPE. Ignore this test on apple for now, until we try to actually address the underlying issue. See rust-lang#131155 and rust-lang#131436 for more context.
Isn't this more of a t-libs-api issue? Surely the Rust compiler is not the only project that has a need for a more graceful handling of broken pipes. |
Well yes, but this is specifically about the rustc binary itself. For rustc itself, we may have different desired behaviors if we do encounter (different kinds of) I/O errors with print/println macro usages and not simply error/terminate. Other programs (not necessarily unix cli binaries) may have different requirements like servers and such. |
Context
std
print!
andprintln!
by default will panic on a broken pipe if-Zon-broken-pipe=kill
is not set when building rustc itself and left as default. If such a panic occurs and is not otherwise caught, it will manifest as an ICE. In bootstrap we build rustc with-Zon-broken-pipe=kill
which terminates rustc to paper over issues likerustc --print=sysroot | false
ICEing from the I/O panic from a broken pipe, but this is not always the desirabled behavior. As Nora said:See https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Internal.20lint.20for.20raw.20.60print!.60.20and.20.60println!.60.3F for a timeline of how we ended up with the
-Zon-broken-pipe=kill
paper.Prior Art
Cargo denies
print{,ln}!
usages viaclippy::print_std{err,out}
:See:
Steps
print{,ln}!
macro usages in rustc.safe_print{,ln}
alternative instead of panicking likeprint{,ln}
(some might want to exit with success, some might want to error, but we probably never want to ICE).print{,ln}!
macro usages to properly handle errors and adding an internal lint to deny (in CI, but allow locally to still allow printf debugging) raw usages ofprint{,ln}!
.print{,ln}!
macro usages to properly handle errors.-Zon-broken-pipe=kill
when building rustc.tests/run-make/broken-pipe-no-ice/rmake.rs
regression test.print{,ln}!
macro usages in the dev-guide.The text was updated successfully, but these errors were encountered: