Skip to content

Do not attempt to unlock envlock in child process after a fork. #82949

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
Mar 10, 2021

Conversation

the8472
Copy link
Member

@the8472 the8472 commented Mar 9, 2021

This implements the first two points from #64718 (comment)

This is a breaking change for cases where the environment is accessed in a Command::pre_exec closure. Except for single-threaded programs these uses were not correct anyway since they aren't async-signal safe.

Note that we had a ui test that explicitly tried env::set_var in pre_exec. As expected it failed with these changes when I tested locally.

@rust-highfive
Copy link
Contributor

r? @m-ou-se

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 9, 2021
@m-ou-se
Copy link
Member

m-ou-se commented Mar 9, 2021

r? @joshtriplett

@rust-highfive rust-highfive assigned joshtriplett and unassigned m-ou-se Mar 9, 2021
@the8472

This comment has been minimized.

@rustbot rustbot added the T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. label Mar 9, 2021
@rust-log-analyzer

This comment has been minimized.

@the8472 the8472 force-pushed the forget-envlock-on-fork branch 3 times, most recently from 1610e35 to 1cce755 Compare March 9, 2021 21:11
@joshtriplett
Copy link
Member

One minor nit; looks good otherwise.

Once this goes in, I'd be happy to review and land a switch back to an rwlock here.

This is a breaking change for cases where the environment is
accessed in a Command::pre_exec closure. Except for
single-threaded programs these uses were not correct
anyway since they aren't async-signal safe.
@the8472 the8472 force-pushed the forget-envlock-on-fork branch from 1cce755 to d854789 Compare March 9, 2021 21:14
@joshtriplett
Copy link
Member

LGTM, r=me once CI passes.

@the8472
Copy link
Member Author

the8472 commented Mar 9, 2021

It passed, you'll have to poke bors.

@joshtriplett
Copy link
Member

@bors r+

@bors
Copy link
Collaborator

bors commented Mar 9, 2021

📌 Commit d854789 has been approved by joshtriplett

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 9, 2021
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 10, 2021
Rollup of 9 pull requests

Successful merges:

 - rust-lang#81309 (always eagerly eval consts in Relate)
 - rust-lang#82217 (Edition-specific preludes)
 - rust-lang#82807 (rustdoc: Remove redundant enableSearchInput function)
 - rust-lang#82924 (WASI: Switch to crt1-command.o to enable support for new-style commands)
 - rust-lang#82949 (Do not attempt to unlock envlock in child process after a fork.)
 - rust-lang#82955 (fix: wrong word)
 - rust-lang#82962 (Treat header as first paragraph for shortened markdown descriptions)
 - rust-lang#82976 (fix error message for copy(_nonoverlapping) overflow)
 - rust-lang#82977 (Rename `Option::get_or_default` to `get_or_insert_default`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit d01648b into rust-lang:master Mar 10, 2021
@rustbot rustbot added this to the 1.52.0 milestone Mar 10, 2021
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 15, 2021
use RWlock when accessing os::env (take 2)

This reverts commit acdca31 (rust-lang#82877) i.e. redoes rust-lang#81850 since the invalid unlock attempts in the child process have been fixed in rust-lang#82949

r? `@joshtriplett`
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants