D7615: procutil: try and avoid angering CoreFoundation on macOS
durin42 (Augie Fackler)
phabricator at mercurial-scm.org
Tue Dec 17 07:56:21 EST 2019
Closed by commit rHGa89381e04c58: procutil: try and avoid angering CoreFoundation on macOS (authored by durin42).
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7615?vs=18755&id=18807
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7615/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7615
AFFECTED FILES
mercurial/utils/procutil.py
CHANGE DETAILS
diff --git a/mercurial/utils/procutil.py b/mercurial/utils/procutil.py
--- a/mercurial/utils/procutil.py
+++ b/mercurial/utils/procutil.py
@@ -423,7 +423,10 @@
return rc
-def gui():
+_is_gui = None
+
+
+def _gui():
'''Are we running in a GUI?'''
if pycompat.isdarwin:
if b'SSH_CONNECTION' in encoding.environ:
@@ -439,6 +442,13 @@
return pycompat.iswindows or encoding.environ.get(b"DISPLAY")
+def gui():
+ global _is_gui
+ if _is_gui is None:
+ _is_gui = _gui()
+ return _is_gui
+
+
def hgcmd():
"""Return the command used to execute current hg
@@ -583,6 +593,11 @@
`Subprocess.wait` function for the spawned process. This is mostly
useful for developers that need to make sure the spawned process
finished before a certain point. (eg: writing test)'''
+ if pycompat.isdarwin:
+ # avoid crash in CoreFoundation in case another thread
+ # calls gui() while we're calling fork().
+ gui()
+
# double-fork to completely detach from the parent process
# based on http://code.activestate.com/recipes/278731
if record_wait is None:
To: durin42, #hg-reviewers, pulkit
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list