| Index: gclient_utils.py
|
| diff --git a/gclient_utils.py b/gclient_utils.py
|
| index d0fbb1ef73431b4980f929b735aee80a8a3f8c16..5ab1ed509a25b112f01c962471c683f6614c801f 100644
|
| --- a/gclient_utils.py
|
| +++ b/gclient_utils.py
|
| @@ -1,16 +1,6 @@
|
| -# Copyright 2009 Google Inc. All Rights Reserved.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| +# Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
|
|
| """Generic utils."""
|
|
|
| @@ -28,6 +18,14 @@ import xml.dom.minidom
|
| import xml.parsers.expat
|
|
|
|
|
| +def hack_subprocess():
|
| + """subprocess functions may throw exceptions when used in multiple threads.
|
| +
|
| + See http://bugs.python.org/issue1731717 for more information.
|
| + """
|
| + subprocess._cleanup = lambda: None
|
| +
|
| +
|
| class Error(Exception):
|
| """gclient exception class."""
|
| pass
|
| @@ -573,6 +571,7 @@ class ExecutionQueue(object):
|
| def __init__(self, jobs, progress):
|
| """jobs specifies the number of concurrent tasks to allow. progress is a
|
| Progress instance."""
|
| + hack_subprocess()
|
| # Set when a thread is done or a new item is enqueued.
|
| self.ready_cond = threading.Condition()
|
| # Maximum number of concurrent tasks.
|
|
|