about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniil Belov <70999565+BelovDV@users.noreply.github.com>2023-03-28 12:13:42 +0300
committerDaniil Belov <70999565+BelovDV@users.noreply.github.com>2023-03-28 17:22:30 +0300
commitbe6a09f96bbe0c0c6ce909a84ea0164112edfced (patch)
treea1b41e1d7bdd65e88f5f4ba844d16ecd3c2e213b
parentcbc064b341be231403d181402a786cce7f1c73f1 (diff)
downloadrust-be6a09f96bbe0c0c6ce909a84ea0164112edfced.tar.gz
rust-be6a09f96bbe0c0c6ce909a84ea0164112edfced.zip
[fix] don't panic on failure to acquire jobserver token
-rw-r--r--compiler/rustc_codegen_ssa/src/back/write.rs4
-rw-r--r--tests/run-make/jobserver-error/Makefile8
-rw-r--r--tests/run-make/jobserver-error/jobserver.stderr4
3 files changed, 14 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs
index 7ce72d21727..2dda4cd1694 100644
--- a/compiler/rustc_codegen_ssa/src/back/write.rs
+++ b/compiler/rustc_codegen_ssa/src/back/write.rs
@@ -1452,8 +1452,8 @@ fn start_executing_work<B: ExtraBackendMethods>(
                         Err(e) => {
                             let msg = &format!("failed to acquire jobserver token: {}", e);
                             shared_emitter.fatal(msg);
-                            // Exit the coordinator thread
-                            panic!("{}", msg)
+                            codegen_done = true;
+                            codegen_aborted = true;
                         }
                     }
                 }
diff --git a/tests/run-make/jobserver-error/Makefile b/tests/run-make/jobserver-error/Makefile
new file mode 100644
index 00000000000..3b9104fc354
--- /dev/null
+++ b/tests/run-make/jobserver-error/Makefile
@@ -0,0 +1,8 @@
+include ../../run-make-fulldeps/tools.mk
+
+# only-linux
+
+# Test compiler behavior in case: `jobserver-auth` points to correct pipe which is not jobserver.
+
+all:
+	bash -c 'echo "fn main() {}" | MAKEFLAGS="--jobserver-auth=3,3" $(RUSTC) - 3</dev/null' 2>&1 | diff jobserver.stderr -
diff --git a/tests/run-make/jobserver-error/jobserver.stderr b/tests/run-make/jobserver-error/jobserver.stderr
new file mode 100644
index 00000000000..d18e15a2628
--- /dev/null
+++ b/tests/run-make/jobserver-error/jobserver.stderr
@@ -0,0 +1,4 @@
+error: failed to acquire jobserver token: early EOF on jobserver pipe
+
+error: aborting due to previous error
+