RFR: 8233115: Protect ExecuteWithLog from running with redirection without a subshell [v2]

Magnus Ihse Bursie ihse at openjdk.org
Fri Sep 5 08:48:47 UTC 2025


> When calling ExecuteWithLog with a redirection (using > or, possibly, <), the entire command needs to be executed in a subshell, that is, inside a pair of parentheses. This is the callers obligation to ensure, but we have proven multiple times that this is hard to keep in mind, and we got several cases of race conditions due to missing this.
> 
> This PR changes the implementation of ExecuteWithLog so it checks if the command line contains redirection, and automatically add the subshell parentheses in that case. The alternative would have been to always execute in a subshell, but that would have been very expensive on Windows.

Magnus Ihse Bursie has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:

 - Merge branch 'master' into safe-execute-with-redirect
 - 8233115: Protect ExecuteWithLog from running with redirection without a subshell

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/27096/files
  - new: https://git.openjdk.org/jdk/pull/27096/files/836558ab..c5111837

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=27096&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27096&range=00-01

  Stats: 4126 lines in 245 files changed: 2630 ins; 395 del; 1101 mod
  Patch: https://git.openjdk.org/jdk/pull/27096.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27096/head:pull/27096

PR: https://git.openjdk.org/jdk/pull/27096


More information about the build-dev mailing list