Skip to content

Commit

Permalink
Rollup merge of #87185 - waterlens:issue-86499-fix, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Fix panics on Windows when the build was cancelled

Fixes #86499

cc `@jyn514`
  • Loading branch information
JohnTitor authored Jul 23, 2021
2 parents f335bca + 3c384ce commit ba869da
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions src/bootstrap/job.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,20 @@ pub unsafe fn setup(build: &mut Build) {
};

let parent = OpenProcess(PROCESS_DUP_HANDLE, FALSE, pid.parse().unwrap());
assert!(
!parent.is_null(),
"PID `{}` doesn't seem to exist: {}",
pid,
io::Error::last_os_error()
);

// If we get a null parent pointer here, it is possible that either
// we have got an invalid pid or the parent process has been closed.
// Since the first case rarely happens
// (only when wrongly setting the environmental variable),
// so it might be better to improve the experience of the second case
// when users have interrupted the parent process and we don't finish
// duplicating the handle yet.
// We just need close the job object if that occurs.
if parent.is_null() {
CloseHandle(job);
return;
}

let mut parent_handle = ptr::null_mut();
let r = DuplicateHandle(
GetCurrentProcess(),
Expand Down

0 comments on commit ba869da

Please sign in to comment.