Page MenuHomePhabricator

Fix three Windows subprocess issues
ClosedPublic

Authored by epriestley on Apr 1 2020, 11:06 PM.
Tags
None
Referenced Files
F18734179: D21047.id.diff
Tue, Sep 30, 10:49 PM
F18695829: D21047.diff
Sat, Sep 27, 6:38 AM
F18678984: D21047.id50147.diff
Fri, Sep 26, 12:19 AM
F18567700: D21047.id.diff
Sep 9 2025, 4:06 PM
F18108713: D21047.id50147.diff
Aug 11 2025, 8:55 AM
F18100930: D21047.diff
Aug 9 2025, 12:11 PM
F17946272: D21047.id.diff
Jul 31 2025, 2:03 PM
F17933264: D21047.diff
Jul 30 2025, 9:04 PM
Subscribers
None

Details

Summary

Fixes T13504. This fixes three issues:

  1. In ExecFuture, "proc_open()" on an invalid binary could fail with an unconditional exception.
  2. In ExecPassthru, "proc_open()" on an invalid binary could fail with an unconditional exception.
  3. In "arc browse", "start <url>" does not work when the shell is bypassed.

In (1) and (2), the desired behavior is to fail with an exit code which is sometimes upgraded to an exception depending on calling convention.

Issue (1) most commonly manifested as "find" failing when run via "cmd.exe".

Issue (2) most commonly manifested as "arc browse" failing.

Issue (3) was entangled with issue (2).

In cases (1) and (2), assume "proc_open()" failures under Windows are because of bad binaries and treat them like bogus commands on Linux/Mac.

In case (3), use "cmd /c start" instead of "start" as a default browser on Windows.

Test Plan
  • On Windows, did mime type detection in cmd.exe. Before patch: proc_open() exception in "find". After patch: clean (albeit not terribly useful) detection.
  • On Windows, did "arc browse ...". Before patch: proc_open() exception in "start". After patch: clean browser execution.

Diff Detail

Repository
rARC Arcanist
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision was not accepted when it landed; it landed in state Needs Review.Apr 1 2020, 11:11 PM
This revision was automatically updated to reflect the committed changes.